JMenuBar, JMenu, JMenuItemおよびAbstractActionの使い方(メニューの階層化)

戻る



:::::::::::::: MyMenuBar.java :::::::::::::: package ProcessDesigner; import java.util.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * $Id: yapd.html,v 1.1 2009/06/22 16:12:34 kishi Exp kishi $ */ public class MyMenuBar extends JMenuBar { public MyMenuBar() { super(); JMenu configuration = new JMenu( "設定" ); JMenu menu2 = new JMenu( "テストラン" ); Action action = new MyMenuBarAction(); JMenu itemMenu = new JMenu( "アイテム" ); JMenu deviceMenu = new JMenu( "デバイス" ); JMenu processMenu = new JMenu( "プロセス" ); configuration.add( itemMenu ); configuration.add( deviceMenu ); configuration.add( processMenu ); // 各メニューに対してのアクションを指定 addMenuItem( configuration, action, "終了", "EXIT" ); addMenuItem( itemMenu, action, "アイテムロード", "LOAD_ITEM" ); addMenuItem( itemMenu, action, "アイテム保存", "SAVE_ITEM" ); addMenuItem( deviceMenu, action, "デバイス設定", "SET_DEVICE" ); addMenuItem( deviceMenu, action, "PING", "PING" ); addMenuItem( processMenu, action, "プロセス作成", "CREATE_PROCESS" ); addMenuItem( processMenu, action, "プロセス編集", "EDIT_PROCESS" ); addMenuItem( processMenu, action, "プロセス保存", "SAVE_PROCESS" ); 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( configuration ); 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: yapd.html,v 1.1 2009/06/22 16:12:34 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: yapd.html,v 1.1 2009/06/22 16:12:34 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 by " + REAL_AUTHOR ); designer.setVisible( true ); designer.pack(); } }
戻る
inserted by FC2 system