第14回セミナー †
メニューの利用 †
- メニューはJMenuBar,JMenu,JMenuItemの3つのクラスを使う
- JAppletやJFrameのsetJMenuBar()メソッドでメニューバーを付加することができる。
(教科書ではBorderLayout.NORTHに置いているが、setJMenuBar()の方がよいと思う)
- JMenuItemにActionListenerを追加してイベント処理する。(JMenuに追加しても動作しない)
- 教科書のコードではJMenuItemをすべて配列に入れて最後にActionListenerを追加しているが、JMenuのadd()メソッドの戻り値に直接ActionListenerを追加する使い方もある。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Sample7 extends JApplet {
private JLabel lb;
public void init(){
lb=new JLabel("いらっしゃいませ。");
JMenuBar mb=new JMenuBar();
JMenu[] mn=new JMenu[4];
mn[0]=new JMenu("メイン1");
mn[1]=new JMenu("メイン2");
mn[2]=new JMenu("サブ1");
mn[3]=new JMenu("サブ2");
// コンテナへ追加
MyAL al=new MyAL();
mn[0].add("乗用車").addActionListener(al);
mn[0].add("トラック").addActionListener(al);
mn[2].add("オープンカー").addActionListener(al);
mn[2].add("タクシー").addActionListener(al);
mn[3].add("スポーツカー").addActionListener(al);
mn[3].add("ミニカー").addActionListener(al);
mn[1].add(mn[2]);
mn[1].addSeparator();
mn[1].add(mn[3]);
mb.add(mn[0]);
mb.add(mn[1]);
setJMenuBar(mb);
//add(mb,BorderLayout.NORTH);
add(lb,BorderLayout.CENTER);
}
// アクションリスナー
class MyAL implements ActionListener {
public void actionPerformed(ActionEvent ev){
JMenuItem tmp=(JMenuItem)ev.getSource();
String str=tmp.getText();
lb.setText(str+"ですね。");
}
}
}
Javaセミナー2014