java 图形化小工具Abstract Window Toolit 菜单项
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
posted on 2021-05-06 22:30 zhangmingda 阅读(91) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-05-06 jquery绑定事件时如何向事件函数里传参数
2020-05-06 yum安装curl支持http2
2018-05-06 Python第二周 str的方法