참고 도서 Java Swing, 2nd Edition |
[그림 14-1] 스윙 메뉴 시스템의 요소들
[그림 14-2] 스윙 메뉴 다이어그램
// IntroExample.java // import java.awt.*; import java.awt.event.*; import javax.swing.*; public class IntroExample extends JMenuBar { String[ ] fileItems = new String[ ] { "New", "Open", "Save", "Exit" }; String[ ] editItems = new String[ ] { "Undo", "Cut", "Copy", "Paste" }; char[ ] fileShortcuts = { "N","O","S","X" }; char[ ] editShortcuts = { "Z","X","C","V" }; public IntroExample( ) { JMenu fileMenu = new JMenu("File"); JMenu editMenu = new JMenu("Edit"); JMenu otherMenu = new JMenu("Other"); JMenu subMenu = new JMenu("SubMenu"); JMenu subMenu2 = new JMenu("SubMenu2"); // 밑줄 단축키가 있는 파일 메뉴 생성 ActionListener printListener = new ActionListener( ) { public void actionPerformed(ActionEvent event) { System.out.println("Menu item [" + event.getActionCommand( ) + "] was pressed."); } }; for (int i=0; i < fileItems.length; i++) { JMenuItem item = new JMenuItem(fileItems[i], fileShortcuts[i]); item.addActionListener(printListener); fileMenu.add(item); } // 일반 단축키가 있는 파일 메뉴 생성 for (int i=0; i < editItems.length; i++) { JMenuItem item = new JMenuItem(editItems[i]); item.setAccelerator(KeyStroke.getKeyStroke(editShortcuts[i], Toolkit.getDefaultToolkit( ).getMenuShortcutKeyMask( ), false)); item.addActionListener(printListener); editMenu.add(item); } // Insert a separator in the Edit menu in Position 1 after "Undo". editMenu.insertSeparator(1); // 다른 메뉴의 서브 클래스 생성 JMenuItem item; subMenu2.add(item = new JMenuItem("Extra 2")); item.addActionListener(printListener); subMenu.add(item = new JMenuItem("Extra 1")); item.addActionListener(printListener); subMenu.add(subMenu2); // 메뉴 자신을 생성 otherMenu.add(subMenu); otherMenu.add(item = new JCheckBoxMenuItem("Check Me")); item.addActionListener(printListener); otherMenu.addSeparator( ); ButtonGroup buttonGroup = new ButtonGroup( ); otherMenu.add(item = new JRadioButtonMenuItem("Radio 1")); item.addActionListener(printListener); buttonGroup.add(item); otherMenu.add(item = new JRadioButtonMenuItem("Radio 2")); item.addActionListener(printListener); buttonGroup.add(item); otherMenu.addSeparator( ); otherMenu.add(item = new JMenuItem("Potted Plant", new ImageIcon("image.gif"))); item.addActionListener(printListener); // 마지막으로 메뉴바에 모든 메뉴 삽입 add(fileMenu); add(editMenu); add(otherMenu); } public static void main(String s[ ]) { JFrame frame = new JFrame("Simple Menu Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setJMenuBar(new IntroExample( )); frame.pack( ); frame.setVisible(true); } }이 예제는 세 개의 단순한 메뉴를 포함하고 있는 메뉴바를 생성하며 File 메뉴는 밑줄이 있는 단축키로 만들고 Edit 메뉴는 일반 단축키를 포함시킨다. [그림 14-3]은 프로그램이 가지고 있는 모든 메뉴를 보여주고 있으며 서로 다른 플랫폼에서 Edit 메뉴의 단축키가 어떻게 나타나는지 보여주고 있다.
[그림 14-3] 스윙 메뉴 효과 예제
Menu item [New] was pressed. Menu item [Radio 1] was pressed.본 기사에서 보여준 클래스와 메소드를 일일이 이해하지 못했다고 자책할 필요는 없다. 단지 각 메뉴에 대해서 짧게 설명했을 뿐이다.
이전 글 : 썬 마이크로시스템즈 최고기술경영자인 존 파울러와의 인터뷰
다음 글 : 자바 프로그램으로 윈도우 레지스트리 다루기
최신 콘텐츠