메뉴에는 드롭다운 메뉴와 팝업 메뉴의 두 가지 유형이 있습니다. 이 장에서는 드롭다운 메뉴 프로그래밍 방법에 대해서만 설명합니다. 메뉴는 항상 인터페이스에 표시된다는 점에서 JComboBox 및 JCheckBox와 다릅니다. 메뉴는 한 번에 하나의 항목만 선택할 수 있다는 점에서 JComboBox와 유사합니다.
드롭다운 메뉴나 팝업 메뉴에서 옵션을 선택하면 ActionEvent 이벤트가 생성됩니다. 해당 옵션에 대한 이벤트가 모니터로 전송되고, 이벤트의 의미는 모니터에서 해석됩니다.
메뉴 표시줄, 메뉴 및 메뉴 항목
드롭다운 메뉴는 메뉴 표시줄에 나타나는 이름으로 시각적으로 표시됩니다. 메뉴 표시줄(JMenuBar)은 일반적으로 JFrame A 상단에 나타납니다. 메뉴 표시줄에는 여러 개의 드롭다운 메뉴가 표시됩니다. 드롭다운 메뉴를 활성화하는 방법에는 두 가지가 있습니다. 하나는 마우스 버튼을 누른 상태를 유지하고 마우스를 놓을 때까지 마우스를 이동하여 선택을 완료하는 것입니다. 또 다른 방법은 커서가 메뉴 표시줄의 메뉴 이름 위에 있을 때 마우스를 클릭하는 것입니다. 이 경우 메뉴가 확장되고 메뉴 항목이 강조 표시됩니다.
메뉴 표시줄에는 여러 메뉴(JMenu)가 포함될 수 있으며 각 메뉴에는 여러 메뉴 항목(JMenuItem)이 포함될 수 있습니다. 예를 들어 Eclipse 환경의 메뉴 모음에는 File, Edit, Source, Refactor 및 기타 메뉴가 포함되어 있으며 각 메뉴에는 많은 메뉴 항목이 있습니다. 예를 들어 파일 메뉴에는 새로 만들기, 파일 열기, 닫기, 모두 닫기 등과 같은 메뉴 항목이 있습니다.
창에 메뉴를 추가하는 방법은 먼저 메뉴 표시줄 개체를 만든 다음 여러 메뉴 개체를 만들고 이러한 메뉴 개체를 메뉴 표시줄에 배치한 다음 필요에 따라 각 메뉴 개체에 메뉴 항목을 추가하는 것입니다. .
메뉴 내의 메뉴 항목은 완전한 메뉴일 수도 있습니다. 메뉴 항목은 또 다른 완전한 메뉴가 될 수 있으므로 계층적인 메뉴 구조를 구성할 수 있습니다.
1. 메뉴바
JMenuBar 클래스의 인스턴스는 메뉴바입니다. 예를 들어, 다음 코드는 메뉴 표시줄 객체 menubar를 생성합니다.
JMenuBar menubar = new JMenuBar();
창에 메뉴 표시줄을 추가하려면 JFrame 클래스의 setJMenuBar() 메서드를 사용해야 합니다. 예를 들어 코드는 다음과 같습니다.
setJMenuBar(menubar);
JMenuBar 클래스의 일반적인 메서드는 다음과 같습니다.
add(JMenu m): 메뉴 표시줄에 메뉴 m을 추가합니다.
countJMenus(): 메뉴 표시줄에 있는 메뉴 항목 수를 가져옵니다.
getJMenu(int p): 메뉴 표시줄에서 메뉴를 가져옵니다.
remove(JMenu m): 메뉴 표시줄에서 메뉴 m을 삭제합니다.
2. 메뉴
JMenu 클래스에 의해 생성된 객체가 메뉴입니다. JMenu 클래스에서 일반적으로 사용되는 메소드는 다음과 같습니다.
JMenu(): 제목이 비어 있는 메뉴를 생성합니다.
JMenu(String s): s라는 메뉴를 만듭니다.
add(JMenuItem item): 매개변수 항목에서 지정한 메뉴 옵션을 메뉴에 추가합니다.
add(JMenu 메뉴): 매개변수 메뉴에서 지정한 메뉴를 메뉴에 추가합니다. 메뉴에 하위 메뉴 삽입을 구현합니다.
addSeparator(): 메뉴 옵션 사이에 구분선을 그립니다.
getItem(int n): 지정된 인덱스에 있는 메뉴 항목을 가져옵니다.
getItemCount(): 메뉴 항목 수를 가져옵니다.
insert(JMenuItem item,int n): 메뉴 위치 n에 메뉴 항목 항목을 삽입합니다.
remove(int n): 메뉴 위치 n에서 메뉴 항목을 삭제합니다.
RemoveAll (): 메뉴의 모든 메뉴 항목을 제거합니다.
3. 메뉴 항목
JMenuItem 클래스의 인스턴스는 메뉴 항목입니다. JMenuItem 클래스의 일반적인 메서드는 다음과 같습니다.
JMenuItem(): 제목 없는 메뉴 항목을 구성합니다.
JMenuItem(String s): 제목이 있는 메뉴 항목을 구성합니다.
setEnabled(boolean b): 현재 단일 항목을 선택할 수 있는지 여부를 설정합니다.
isEnabled(): 현재 메뉴 항목을 사용자가 선택할 수 있는지 여부를 반환합니다.
getLabel(): 메뉴 항목의 이름을 가져옵니다.
setLabel(): 메뉴 옵션의 이름을 설정합니다.
addActionListener(ActionListener e): 메뉴 항목에 대한 모니터를 설정합니다. 모니터는 메뉴를 클릭하면 작업 이벤트를 받아들입니다.
4. 메뉴 이벤트 처리
메뉴의 이벤트 소스는 마우스로 메뉴 항목을 클릭하는 것입니다. 이 이벤트를 처리하는 인터페이스는 ActionListener이고, 구현하는 인터페이스 메소드는 actionPerformed(ActionEvent e)이며, 이벤트 소스를 얻는 메소드는 getSource()입니다.
[예] 소형 애플리케이션의 구현 방법. 창에 메뉴 표시줄이 있음을 나타냅니다. 버튼이 열린 창 상태일 때, 버튼을 클릭하면 창이 열립니다. 창에는 2개의 메뉴가 있으며, 각 메뉴에는 3개의 메뉴 항목이 있습니다. 메뉴 항목 모니터링 방법은 메뉴 항목이 선택되면 해당 메뉴 항목이 선택되었다는 단어를 텍스트 상자에 표시합니다.
import java.applet.* import javax.swing.*; import java.awt.*; import java.awt.event.*; class MenuWindow extends JFrame implements ActionListener{ public static JtextField text; private void addItem(JMenu Menu,String menuName,ActionListener listener){ JMenuItem anItem = new JMenuItem(menuName); anItem.setActionCommand(menuName); anItem.addActionListener(listener); Menu.add(anItem); } public MenuWindow(String s,int w,int h){ setTitle(s); Container con = this.getContentPane(); con.setLayout(new BorderLayout()); this.setLocation(100,100); this.setSize(w,h); JMenu menu1 = new JMenu("体育"); addItem(menu1," 跑步",this); addItem(menu1," 跳绳",this); addItem(menu1,"打球",this); JMenu menu2 = JMenu("娱乐"); addItem(menu2,"唱歌",this); addItem(menu2,"跳舞",this); addItem(menu2,"游戏",this); JMenuBar menubar = new JMenuBar(); text = new JTextField(); menubar.add(menu1); menubar.add(menu2); setJMenuBar(MenuBar); con.add(text,BorderLayout.NORTH); } public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand()+"菜单项被选中!"); } } public class Example6_5 extends Applet implements ActionListener{ MenuWindow window; JButton button; boolean bflg; public void init(){ button = new JButton("打开我的体育娱乐之窗");bflg =true; window = new MenuWindow("体育娱乐之窗",100,100); button.addActionListener(this); add(button); } public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ if(bflg){ window.setVisible(true); bflg = false; button.setLabel("关闭我的体育娱乐之窗"); } else{ window.setVisible(false); bflg = true; button.setLabel("打开我的体育娱乐之窗"); } } } }
5. Embed 하위 메뉴
는 메뉴를 생성하고 여러 메뉴 항목을 생성합니다. 그 중 하나는 다른 메뉴(다른 메뉴 포함)입니다. 항목)은 메뉴 중첩을 구성합니다. 예를 들어 위 프로그램의 해당 코드를 다음과 같이 변경합니다.
Menu menu1,menu2,item4; MenuItem item3,item5,item6,item41,item42;
item41 및 item42 메뉴 항목을 생성하려면 다음 코드를 삽입하고 item4 메뉴에 추가합니다.
item41= new MenuItem(“东方红”); item42 = new MenuItem(“牡丹”); item4.add(item41); item4.add(item42);
그런 다음 item4 메뉴를 클릭하면 선택할 수 있는 메뉴 항목이 두 개 더 열립니다.
6. 메뉴에 종료 항목 추가
새 메뉴 항목 추가 및 메뉴 항목에 모니터링 추가 해당 모니터링 메소드에서 System.exit() 메소드를 사용하여 메뉴 종료를 클릭합니다. 항목을 선택할 때 Java 런타임 환경입니다. 예를 들어 다음 코드는 다음과 같습니다.
… item7 = new MenuItem(“退出”); item7.addActionListener(this); … public void actionPerformed(ActionEvent e){ if(e.getSource()==item7){ System.exit(0); } }
7.设置菜单项的快捷键
用MenuShortcut类为菜单项设置快捷键。构造方法是MenuShortcut(int key)。其中key可以取值KeyEvent.VK_A至KenEvent.VK_Z,也可以取 ‘a'到 ‘z'键码值。菜单项使用setShortcut(MenuShortcut k)方法来设置快捷键。例如,以下代码设置字母e为快捷键。
class Herwindow extends Frame implements ActionListener{ MenuBar menbar; Menu menu; MenuItem item; MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_E); … item.setShortcut(shortcut); … }
选择框菜单项
菜单也可以包含具有持久的选择状态的选项,这种特殊的菜单可由JCheckBoxMenuItem类来定义。JCheckBoxMenuItem对象像选择框一样,能表示一个选项被选中与否,也可以作为一个菜单项加到下拉菜单中。点击JCheckBoxMenuItem菜单时,就会在它的左边出现打勾符号或清除打勾符号。例如,在例6.5程序的类MenuWindow中,将代码
addItem(menu1,“跑步”,this);addItem(menu1,”跳绳”,this);
改写成以下代码,就将两个普通菜单项“跑步“和“跳绳”改成两个选择框菜单项:
JCheckBoxMenuItem item1 = new JCheckBoxMenuItem(“跑步”); JCheckBoxMenuItem item2 = new JCheckBoxMenuItem(“跳绳”); item1.setActionCommand(“跑步”); item1.addActionListener(this); menu1.add(item1); item2.setActionCommand(“跳绳”); item2.addActionListener(this); menu1.add(item2);
更多使用Java编写图形化的菜单的教程相关文章请关注PHP中文网!