AWT 中的菜单由如下几个类组合而成
  • MenuBar: 菜单条,菜单的容器。
  • Menu: 菜单组件,菜单项的容器,它也是Menultem的子类,所以可作为菜单项使用。
  • PopupMenu: 上下文菜单组件(右键菜单组件)。
  • MenuItem: 菜单项组件。
  • CheckboxMenuItem: 复选框菜单组件。
  • MenuShortcut: 菜单快捷键组件。
AWT菜单的继承组合关系如下:
菜单代码示例:
  • MenuBar 菜单栏
  • Menu 菜单名
  • MenuItem 菜单子项
  • popupMenu 右键菜单
  • e.consume();//结束事件传播。
  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4. /**
  5. * @ClassName MenuTest
  6. * @projectName: object1
  7. * @author: Zhangmingda
  8. * @description: XXX
  9. * date: 2021/5/6.
  10. */
  11. public class MenuTest {
  12. public static void main(String[] args) {
  13. Frame frame = new Frame("记事本");
  14. //关闭按钮动作
  15. frame.addWindowListener(new WindowAdapter() {
  16. @Override
  17. public void windowClosing(WindowEvent e) {
  18. System.out.println("窗口关闭");
  19. System.exit(0);
  20. }
  21. });
  22. //文本框
  23. TextArea textArea = new TextArea(15,60);
  24. frame.add(textArea);
  25.  
  26. //菜单栏
  27. MenuBar menuBar = new MenuBar();
  28. //菜单
  29. Menu fileMenu = new Menu("文件");
  30. Menu editMenu = new Menu("编辑");
  31.  
  32. //监听点击事件
  33. ActionListener menuItemListener = e -> {
  34. String cmd = e.getActionCommand();
  35. System.out.println("点击了菜单:" + cmd);
  36. if (cmd.equals("退出")){
  37. System.exit(0);
  38. }
  39. };
  40. //文件菜单项
  41. MenuItem newFileItem = new MenuItem("新建");
  42. MenuItem saveFileItem = new MenuItem("保存");
  43. MenuItem exitItem = new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X)); //设置快捷键:new MenuShortcut(KeyEvent.VK_X)
  44. //添加监听点击事件
  45. newFileItem.addActionListener(menuItemListener);
  46. saveFileItem.addActionListener(menuItemListener);
  47. exitItem.addActionListener(menuItemListener);
  48. //文件菜单项组件组装
  49. fileMenu.add(newFileItem);
  50. fileMenu.add(saveFileItem);
  51. fileMenu.add(exitItem);
  52. //编辑菜单项
  53. MenuItem autoLen = new MenuItem("自动换行");
  54. MenuItem copyItem = new MenuItem("复制");
  55. MenuItem pasteItem = new MenuItem("粘贴");
  56. Menu formatMenu = new Menu("格式");
  57. MenuItem addNote = new MenuItem("注释");
  58. MenuItem cancleNote = new MenuItem("取消注释");
  59. formatMenu.add(addNote);formatMenu.add(cancleNote);
  60. //编辑菜单项组装
  61. editMenu.add(autoLen);
  62. editMenu.add(new MenuItem("-")); //分割线
  63. editMenu.add(copyItem);
  64. editMenu.add(pasteItem);
  65. editMenu.add(new MenuItem("-"));
  66. editMenu.add(formatMenu);
  67. //菜单栏,添加菜单
  68. menuBar.add(fileMenu);
  69. menuBar.add(editMenu);
  70. frame.setMenuBar(menuBar);
  71.  
  72. //右键菜单
  73. PopupMenu popupMenu = new PopupMenu();
  74. popupMenu.add(new MenuItem("复制"));
  75. popupMenu.add(new MenuItem("粘贴"));
  76. frame.add(popupMenu); //当前窗口添加右键菜单窗口
  77.  
  78. //文本框内鼠标松开,右键触发的动作
  79. textArea.addMouseListener(new MouseAdapter() {
  80. @Override
  81. public void mouseReleased(MouseEvent e) {
  82. if (e.isPopupTrigger()){ //如果是右键点击后的松开动作
  83. popupMenu.show(textArea,e.getX(),e.getY());
  84. e.consume();//结束事件。阻止事件被其他监听器捕获:比如windows自带的右击弹窗动作
  85. }
  86. }
  87. });
  88. frame.setLocation(400,300);
  89. frame.pack();
  90. frame.setVisible(true);
  91.  
  92. }
  93. }

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. 【性能优化】(2)JVM调优

    JVM调优 2019-07-21  12:32:00  by冲冲 1.

  2. .net打独立运行环境遇到无法trim遇到的bug

    背景介绍 工作中我用到kotlin写代码,在orm上ktorm是一款非常优秀的操作db的框架,我喜欢用它所以我写了一个插件能够增加我的工作效率,这款idea插件的主体逻辑是.net开发的(没错是跨平台 ...

  3. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

    1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...

  4. 如何在Docker容器中使用Arthas

    Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar ...

  5. js 鼠标放到图片上放大某一部分效果

    动图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  6. 毕业设计之LNP+DISCUZ +分离的数据库操作

    环境介绍: CentOS6.9最小化安装 https://nginx.org/download/nginx-1.16.1.tar.gz https://www.php.net/distribution ...

  7. C语言按行读入文件

    getline() 函数无论一行多长,动态分配内存读入行 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <s ...

  8. C#多个标题头合并

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { switch (e.Row.RowType) ...

  9. linux系统中tomcat的安装及使用

    linux系统中tomcat的安装及使用 linux系统中安装tomcat tar.gz/tar文件格式安装 先下载好该文件,将文件放置在校安装的目录下, 如果是tar.gz后缀使用 tar -zxv ...

  10. Pytorch学习笔记08----优化器算法Optimizer详解(SGD、Adam)

    1.优化器算法简述 首先来看一下梯度下降最常见的三种变形 BGD,SGD,MBGD,这三种形式的区别就是取决于我们用多少数据来计算目标函数的梯度,这样的话自然就涉及到一个 trade-off,即参数更 ...