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