JMenuBar, JMenu, JMenuItemおよびAbstractActionの使い方

戻る



:::::::::::::: MyMenuBar.java :::::::::::::: package ProcessDesigner; import java.util.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * $Id: ProcessDesigner.html,v 1.1 2009/06/22 16:11:52 kishi Exp kishi $ */ public class MyMenuBar extends JMenuBar { public MyMenuBar() { super(); JMenu menu1 = new JMenu( "メニュー1" ); JMenu menu2 = new JMenu( "メニュー2" ); Action action = new MyMenuBarAction(); addMenuItem( menu1, action, "新規作成", "CREATE" ); addMenuItem( menu1, action, "終了", "EXIT" ); /** ベタに書くとこうなる JMenuItem create = new JMenuItem("新規作成"); menu1.add(create); create.setActionCommand("CREATE"); create.addActionListener(action); JMenuItem exit = new JMenuItem("終了"); exit.setActionCommand("EXIT"); exit.addActionListener(action); menu1.add(exit); */ addMenuItem( menu2, action, "機能1", "A" ); addMenuItem( menu2, action, "機能2", "B" ); addMenuItem( menu2, action, "機能3", "C" ); addMenuItem( menu2, action, "機能4", "D" ); addMenuItem( menu2, action, "機能5", "E" ); this.add( menu1 ); this.add( menu2 ); } private void addMenuItem( JMenu menu, Action action, String description, String commandName ) { JMenuItem item = new JMenuItem( description ); menu.add( item ); item.setActionCommand( commandName ); item.addActionListener( action ); } } :::::::::::::: MyMenuBarAction.java :::::::::::::: package ProcessDesigner; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * $Id: ProcessDesigner.html,v 1.1 2009/06/22 16:11:52 kishi Exp kishi $ */ public class MyMenuBarAction extends AbstractAction { public MyMenuBarAction() { super(); } public void actionPerformed( ActionEvent event ) { String eventname = event.getActionCommand(); // 実行されたコマンドをダンプします System.out.println( eventname ); if ( eventname.equals( "EXIT" ) ) { System.exit( 0 ); } } } :::::::::::::: ProcessDesigner.java :::::::::::::: package ProcessDesigner; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * $Id: ProcessDesigner.html,v 1.1 2009/06/22 16:11:52 kishi Exp kishi $ */ public class ProcessDesigner extends JFrame { private static final String REAL_AUTHOR = "岸 康弘"; public ProcessDesigner() { // メニュー MyMenuBar menuBar = new MyMenuBar(); //----------------------------------------------------- // 全ての部品をContainerに配置する //----------------------------------------------------- Container content = this.getContentPane(); content.add( menuBar, BorderLayout.NORTH ); content.add( new JPanel(), BorderLayout.CENTER ); content.add( new JPanel(), BorderLayout.EAST ); content.add( new JPanel(), BorderLayout.SOUTH ); } public static void main( String[] args ) { ProcessDesigner designer = new ProcessDesigner(); /* 終了処理 */ designer.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); designer.setBounds( 0, 0, 600, 800 ); // タイトルの表示 designer.setTitle( "Process Designer DEMO" ); designer.setVisible( true ); designer.pack(); } }

戻る inserted by FC2 system