AWT 中的菜单由如下几个类组合而成
  • MenuBar: 菜单条,菜单的容器。
  • Menu: 菜单组件,菜单项的容器,它也是Menultem的子类,所以可作为菜单项使用。
  • PopupMenu: 上下文菜单组件(右键菜单组件)。
  • MenuItem: 菜单项组件。
  • CheckboxMenuItem: 复选框菜单组件。
  • MenuShortcut: 菜单快捷键组件。
AWT菜单的继承组合关系如下:
菜单代码示例:
  • MenuBar 菜单栏
  • Menu 菜单名
  • MenuItem 菜单子项
  • popupMenu 右键菜单
  • e.consume();//结束事件传播。
import java.awt.*;
import java.awt.event.*; /**
* @ClassName MenuTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/5/6.
*/
public class MenuTest {
public static void main(String[] args) {
Frame frame = new Frame("记事本");
//关闭按钮动作
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口关闭");
System.exit(0);
}
});
//文本框
TextArea textArea = new TextArea(15,60);
frame.add(textArea); //菜单栏
MenuBar menuBar = new MenuBar();
//菜单
Menu fileMenu = new Menu("文件");
Menu editMenu = new Menu("编辑"); //监听点击事件
ActionListener menuItemListener = e -> {
String cmd = e.getActionCommand();
System.out.println("点击了菜单:" + cmd);
if (cmd.equals("退出")){
System.exit(0);
}
};
//文件菜单项
MenuItem newFileItem = new MenuItem("新建");
MenuItem saveFileItem = new MenuItem("保存");
MenuItem exitItem = new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X)); //设置快捷键:new MenuShortcut(KeyEvent.VK_X)
//添加监听点击事件
newFileItem.addActionListener(menuItemListener);
saveFileItem.addActionListener(menuItemListener);
exitItem.addActionListener(menuItemListener);
//文件菜单项组件组装
fileMenu.add(newFileItem);
fileMenu.add(saveFileItem);
fileMenu.add(exitItem);
//编辑菜单项
MenuItem autoLen = new MenuItem("自动换行");
MenuItem copyItem = new MenuItem("复制");
MenuItem pasteItem = new MenuItem("粘贴");
Menu formatMenu = new Menu("格式");
MenuItem addNote = new MenuItem("注释");
MenuItem cancleNote = new MenuItem("取消注释");
formatMenu.add(addNote);formatMenu.add(cancleNote);
//编辑菜单项组装
editMenu.add(autoLen);
editMenu.add(new MenuItem("-")); //分割线
editMenu.add(copyItem);
editMenu.add(pasteItem);
editMenu.add(new MenuItem("-"));
editMenu.add(formatMenu);
//菜单栏,添加菜单
menuBar.add(fileMenu);
menuBar.add(editMenu);
frame.setMenuBar(menuBar); //右键菜单
PopupMenu popupMenu = new PopupMenu();
popupMenu.add(new MenuItem("复制"));
popupMenu.add(new MenuItem("粘贴"));
frame.add(popupMenu); //当前窗口添加右键菜单窗口 //文本框内鼠标松开,右键触发的动作
textArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()){ //如果是右键点击后的松开动作
popupMenu.show(textArea,e.getX(),e.getY());
e.consume();//结束事件。阻止事件被其他监听器捕获:比如windows自带的右击弹窗动作
}
}
});
frame.setLocation(400,300);
frame.pack();
frame.setVisible(true); }
}

java 图形化小工具Abstract Window Toolit 菜单项的更多相关文章

  1. java 图形化小工具Abstract Window Toolit

      老掉牙的历史 Java1.0在发布的时候,就为我们提供了GUI操作的库,这个库系统在所有的平台下都可以运行,这套基本的类库被称作抽象窗口工具集(Abstract Window Toolit),简称 ...

  2. java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏

    画笔Graphics Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图. Graphics常用的画图方法如下: drawLine(): ...

  3. java 图形化小工具Abstract Window Toolit 事件处理

    事件处理设计到了三个对象: EventSource(事件源):事件发生的场所,通常就是各个组件,例如按钮.窗口,菜单等. Event (事件封装了GUI组件上发生的特定事情(通常就是一次用户操作).如 ...

  4. java 图形化小工具Abstract Window Toolit 常用组件:对话框Dialog FileDialog

    对话框 Dialog是Window类的子类,是1个容器类,属于特殊组件,对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一样.但对话框有如下两点需要注意. (1),对话框通常依赖于其他 ...

  5. java 图形化小工具Abstract Window Toolit ImageIO缩放图片,添加水印

    实现步骤: 读取图像Image src = ImageIO.read 创建目标图像BufferedImage distImage = new BufferedImage(dstWidth, dstHe ...

  6. java 图形化小工具Abstract Window Toolit 画笔 处理位图

    具体编程来处理位图 知识点: 实现逻辑: 画板上的图片 new BufferedImage(canvasWidth,canvasHeight,BufferedImage.TYPE_INT_BGR); ...

  7. java 图形化小工具Abstract Window Toolit 常用组件

    基本组件 Button: 按钮,可接受单击操作 Canvas: 用于绘图的画布 Checkbox: 复选框组(也可变成单选框组件) CheckboxGroup: 用于将多个checkbox组件组合成一 ...

  8. java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位

    1.FlowLayout流式布局管理器: FlowLayout布局管理器中,组件像水流一样向某方向流动(排列),遇到障碍(边界)就折回,重头开始排列 .在默认情况下,FlowLayout局管理器从左向 ...

  9. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

随机推荐

  1. idea明明设置了utf-8, 但是提交的配置文件到远程中文乱码

    IDEA中编辑的.properties配置文件提交到Git后显示乱码 解决方法:

  2. docker 启动报错:Docker.Core.Backend.BackendException: Error response from daemon: open \\.\pipe\docker_e

    win10 docker启动后报错: Docker.Core.Backend.BackendException:Error response from daemon: open \\.\pipe\do ...

  3. Codeforces 1553I - Stairs(分治 NTT+容斥)

    Codeforces 题面传送门 & 洛谷题面传送门 u1s1 感觉这道题放到 D1+D2 里作为 5250 分的 I 有点偏简单了吧 首先一件非常显然的事情是,如果我们已知了排列对应的阶梯序 ...

  4. Linux基础——常用命令

    find /grep /xargs /sort /uniq /tr /cut /paste /sed /awk......待续...... 1.find 名字查找: find . -name file ...

  5. mybatis项目中,使用useSSL=true却报错

    今天在玩儿mybatis的时候遇到一个蛮有东西的事情:抛了一个让我折腾几个小时的错误,所以记录一下 这个错误有意思的地方就在于这里: 当使用useSSL安全连接时,抛出了上述的错误把useSSL改为f ...

  6. Erda 系列 Meetup「成都站」携手SOFAStack 和你聊聊云原生基础设施建设那点事儿

    技术控快上车啦秋天的第一场活动一起来收获技术干货吧! 主题: 云原生基础设施建设的现在及未来时间: 2021 年 9 月 11 日 (周六) 13:30-17:00活动地点: 四川省成都市蚂蚁 C 空 ...

  7. 答应我,这次必须搞懂!痛点难点Promise。(小点心async/await,基于Promise的更优方案)

    Promise 出现的原因 在 Promise 出现以前,我们处理一个异步网络请求,大概是这样: // 请求 代表 一个异步网络调用. // 请求结果 代表网络请求的响应. 请求1(function( ...

  8. 【STM32】使用DMA+SPI传输数据

    DMA(Direct Memory Access):直接存储器访问 一些简单的动作,例如复制或发送,就可以不透过CPU,从而减轻CPU负担 由于本人使用的是正点原子开发板,部分代码取自里面的范例 本篇 ...

  9. android知识点duplicateParentState

    android知识点duplicateParentState 今天要做一个效果,组件RelativeLayout上有两个TextView,这两个TextView具有不同的颜色值,现在要的效果是,当Re ...

  10. sf02_选择排序算法Java Python rust 实现

    Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ...