Java를 사용하여 그래픽 메뉴 작성에 대한 튜토리얼
메뉴에는 드롭다운 메뉴와 팝업 메뉴의 두 가지 유형이 있습니다. 이 장에서는 드롭다운 메뉴 프로그래밍 방법에 대해서만 설명합니다. 메뉴는 항상 인터페이스에 표시된다는 점에서 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中文网!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

데이터베이스 쿼리에 tkmyBatis를 사용하는 경우 쿼리 조건을 구축하기 위해 엔티티 클래스 변수 이름을 우아하게 가져 오는 방법이 일반적인 문제입니다. 이 기사는 고정 될 것입니다 ...

Redis 캐싱 솔루션은 제품 순위 목록의 요구 사항을 어떻게 인식합니까? 개발 과정에서 우리는 종종 a ... 표시와 같은 순위의 요구 사항을 처리해야합니다.
