- ベストアンサー
JavaのGUIプログラミングでメニューの処理方法
- JavaのGUIプログラミングでメニューを作成した際の処理方法についてアドバイスをお願いします。
- メニューごとにクラスを作成するか、匿名のインナークラスを使用するかで処理を分ける方法があります。
- 初心者にとっては分かりにくい部分もあるため、参考になるソースコードの提示もお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >ActionListenerを実装したクラスのactionPerformedメソッドで >イベントが起きたものをif文で場合分けして、それぞれの処理を >記述していますが、これがいい方法だとはどうしても思えません。 あくまでも個人的好みですが、私も、これがかっこいい書き方とは思えませんねぇ。 なんか、オブジェクト指向的じゃないような気がして・・・。 私は、普通のインナークラスを使う方法が多いです。 匿名クラスは、初期化のメソッド内がごちゃごちゃしてくるので、これまた、好きではありませんので。 (コンパイルするときは全角スペースを半角スペースに変換してからにしてください) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame { JButton button1; JButton button2; public Test() { Container con = getContentPane(); con.setLayout(new FlowLayout()); button1 = new JButton("button1"); button1.addActionListener(new Button1Clicked()); con.add(button1); button2 = new JButton("button2"); button2.addActionListener(new Button2Clicked()); con.add(button2); pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } class Button1Clicked implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("button1 clicked!"); } } class Button2Clicked implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("button2 clicked!"); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new Test().setVisible(true); } }); } } ただ、メニューバーやツールバーなどを備えた本格的なインターフェスを構築したいときは、Actionインターフェイスを使いこなせるようになった方がいいですよ。
お礼
アドバイスに加えて具体的なソースまで載せて下さったので、以前よりもすっきりとしたソースが書けました。 匿名クラスも試したのですが、ご指摘どおりごちゃごちゃしてしまったので、普通のインナークラスがいいですね。 まだまだ初心者なので試行錯誤しながら頑張っていきます。 ありがとうございました。