공통적인 메뉴 관련 컴포넌트는 다음 표와 같습니다.
메뉴 컴포넌트 이름 | Function |
---|---|
MenuBar | 메뉴바, 메뉴 컨테이너. |
Menu | Menu 구성요소, 메뉴 항목의 컨테이너입니다. Menultem의 서브클래스이기도 해서 메뉴 아이템 |
PopupMenu | 컨텍스트 메뉴 컴포넌트(우클릭 메뉴 컴포넌트) |
Menultem | 메뉴 아이템 컴포넌트로 활용 가능합니다. |
CheckboxMenuItem | Checkbox 메뉴 항목 컴포넌트 |
다음 그림은 일반적인 메뉴 관련 컴포넌트 통합 시스템 다이어그램입니다.
메뉴 관련 컴포넌트 사용법:
1. 이러한 구성 요소는 MenuItem 및 해당 하위 클래스 개체일 수 있습니다.
2. 메뉴 구성 요소 Menu 또는 PopupMenu(하위 메뉴를 팝업하려면 마우스 오른쪽 버튼을 클릭)를 준비하고 첫 번째 단계에서 준비한 메뉴 항목 구성 요소를 추가합니다. 메뉴바 컴포넌트 MenuBar, 두 번째 단계에서 준비한 메뉴 컴포넌트 메뉴 추가
4. 세 번째 단계에서 준비한 메뉴바 컴포넌트를 윈도우 객체에 추가하여 표시합니다.
팁:
1. 특정 메뉴의 메뉴 항목 사이에 구분선을 추가하려면 메뉴의 추가(새 MenuItem(-))만 호출하면 됩니다.
2. 바로가기 키 기능을 메뉴 항목과 연결하려면 메뉴 항목 개체를 생성할 때만 설정하면 됩니다. 예를 들어 ctrl+Shif+/ 바로가기 키를 메뉴 항목과 연결하려면 필요: new MenuItem("메뉴 항목 이름",new MenuShortcut(KeyEvent.VK_Q,true);
사례 1:
awt의 공통 메뉴 구성 요소를 사용하여 아래 표시된 효과를 완성하세요
데모 코드 1:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class SimpleMenu { //创建窗口 private Frame frame = new Frame("这里测试菜单相关组件"); //创建菜单条组件 private MenuBar menuBar = new MenuBar(); //创建文件菜单组件 private Menu fileMenu = new Menu("文件"); //创建编辑菜单组件 private Menu editMenu = new Menu("编辑"); //创建新建菜单项 private MenuItem newItem = new MenuItem("新建"); //创建保存菜单项 private MenuItem saveItem = new MenuItem("保存"); //创建退出菜单项 private MenuItem exitItem = new MenuItem("退出"); //创建自动换行选择框菜单项 private CheckboxMenuItem autoWrap = new CheckboxMenuItem("自动换行"); //创建复制菜单项 private MenuItem copyItem = new MenuItem("复制"); //创建粘贴菜单项 private MenuItem pasteItem = new MenuItem("粘贴"); //创建格式菜单 private Menu formatMenu = new Menu("格式"); //创建注释菜单项 private MenuItem commentItem = new MenuItem("注释"); //创建取消注释菜单项 private MenuItem cancelItem = new MenuItem("取消注释"); //创建一个文本域 private TextArea ta = new TextArea(6, 40); public void init(){ //定义菜单事件监听器 ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); ta.append("单击“"+command+"”菜单\n"); if (command.equals("退出")){ System.exit(0); } } }; //为注释菜单项和退出菜单项注册监听器 commentItem.addActionListener(listener); exitItem.addActionListener(listener); //为文件菜单fileMenu添加菜单项 fileMenu.add(newItem); fileMenu.add(saveItem); fileMenu.add(exitItem); //为编辑菜单editMenu添加菜单项 editMenu.add(autoWrap); editMenu.add(copyItem); editMenu.add(pasteItem); //为格式化菜单formatMenu添加菜单项 formatMenu.add(commentItem); formatMenu.add(cancelItem); //将格式化菜单添加到编辑菜单中,作为二级菜单 editMenu.add(new MenuItem("-")); editMenu.add(formatMenu); //将文件菜单和编辑菜单添加到菜单条中 menuBar.add(fileMenu); menuBar.add(editMenu); //把菜单条设置到frame窗口上 frame.setMenuBar(menuBar); //把文本域添加到frame中 frame.add(ta); //设置frame最佳大小并可见 frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new SimpleMenu().init(); } }
사례 2:
PopupMenu를 통해 아래 효과 달성:
1. PopubMenu 메뉴 구성요소 생성
2. PopupMenu에 추가. 대상 구성 요소에 PopupMenu 추가 ;
PopubMenu 메뉴를 표시해야 하는 구성 요소의 경우 마우스 리스너 이벤트를 등록하세요. 사용자가 오른쪽 버튼을 놓으면 메뉴가 팝업됩니다. 데모 코드 2:import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class PopupMenuTest { private Frame frame = new Frame("这里测试PopupMenu"); // 创建PopubMenu菜单 private PopupMenu popupMenu = new PopupMenu(); // 创建菜单条 private MenuItem commentItem = new MenuItem("注释"); private MenuItem cancelItem = new MenuItem("取消注释"); private MenuItem copyItem = new MenuItem("复制"); private MenuItem pasteItem = new MenuItem("保存"); // 创建一个文本域 private TextArea ta = new TextArea("我爱中华!!!", 6, 40); // 创建一个Panel private Panel panel = new Panel(); public void init() { // 把菜单项添加到PopupMenu中 popupMenu.add(commentItem); popupMenu.add(cancelItem); popupMenu.add(copyItem); popupMenu.add(pasteItem); // 设置panel大小 panel.setPreferredSize(new Dimension(300, 100)); // 把PopupMenu添加到panel中 panel.add(popupMenu); // 为panel注册鼠标事件 panel.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { boolean flag = e.isPopupTrigger(); // 判断当前鼠标操作是不是触发PopupMenu的操作 if (flag) { // 让PopupMenu显示在panel上,并且跟随鼠标事件发生的地方显示 popupMenu.show(panel, e.getX(), e.getY()); } } }); // 把ta添加到frame中间区域中 frame.add(ta); // 把panel添加到frame底部 frame.add(panel, BorderLayout.SOUTH); // 设置frame最佳大小,并可视; frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new PopupMenuTest().init(); } }.
위 내용은 Java GUI 프로그래밍 메뉴 구성 요소를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!