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); } }