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();
}
}
戻る