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. 联盛德 HLK-W806 (三): 免按键自动下载和复位

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  2. [POI2002][HAOI2007]反素数

    题意 反素数 想法 证明这样一个结论 对于一个可行的反素数\(p\) \(p = \sum_{i}^{k} p_{k} ^ {c_k}\) 当 \(p_i > p_j 有 c_i < c_ ...

  3. Educational Codeforces Round 94 题解

    我竟然比到了全场的 rk 14,incredible! A 大水题,直接输出 \(n\) 遍 \(s_n\) 即可. B 分类讨论题,放在 B 题可能难度有点大了. 直接暴力枚举你拿了多少个宝剑,然后 ...

  4. C++ and OO Num. Comp. Sci. Eng. - Part 3.

    2. Expressions and Statements 声明是将一个种类型的变量引入程序的语句. 作用域 作用域又一对花括号限定,在所有花括号之外的为全局作用域. 在作用域内声明的变量为局部变量. ...

  5. 间断有限元h自适应处理方法

    细分单元 function Hrefine2D(refineflag) 根据refineflag变量细分单元,其中refineflag变量大小为 [Kx1],需要细分单元标记为1,不需要单元为0. 根 ...

  6. Linux终端命令行的快捷键列表

    tab键:命令.文件名等自动补全功能. Ctrl+a:光标回到命令行首.Ctrl+e:光标回到命令行尾.Ctrl+k:删除光标处到行尾的字符.Ctrl+u:删除整个命令行文本字符.ctrl+y: 粘贴 ...

  7. shell批量创建用户

    #!/bin/bash cat << EOF ************************************************************ 批量添加用户并随机生 ...

  8. Mysql-多个left join 计算逻辑

    单个left join: (1)一对一:结果表的行数=左表行数 (2)一对多:结果表的行数>左表行数 多个left join: (0)多个left join由上到下,依次生成查询表,原理同单个l ...

  9. 9. Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  10. makefile高级用法

    在某些文件里面找.o find ./ -name "*.o" -e ls- R 看文件目录下面的文件 嵌套 和 VPATH [1]VPATH的用法 (1)VPATH:虚路径 1) ...