2012-01-13 11 views
1

JMenuItemでclickイベントを実行するコードを記述しましたが、デバッグ中は起動しません。この呼び出しでJMenuuitem - クリック - アクション - Java

public class ClsMenu extends JMenuItem implements ActionListener { 

    JTextArea output; 
    JScrollPane scrollPane; 

    public ClsMenu(String text) 
    { 
    super(text); 
    addActionListener(this); 
    } 

    public JMenuBar createMenu() 
    { 
    JMenuBar menuBar; 
    JMenu menuFood,menuDrinks,menuParty; 
    JMenuItem foodItem; 


    menuBar=new JMenuBar(); 


    menuFood=new JMenu("Food"); 
    foodItem=new JMenuItem("Pizza"); 
    menuFood.add(foodItem); 
    menuBar.add(menuFood); 
    return menuBar; 
    } 
    public void createGUIandShow() 
    { 
    JFrame frame = new JFrame("Restuarant"); 
    frame.setJMenuBar(createMenu()); 
    } 

    public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 
    System.out.println("item clicked"+e.getActionCommand()); 
    } 
} 

(私は私はこのフォーラムでは、これらの質問をすることになっておりませんことを知っているが、私はこのフォーラムに新しいです)、私はあなたが追加する必要があるオブジェクト

public class ClsMenuDisp { 
    public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    ClsMenu menu=new ClsMenu("testitem"); 
    menu.createGUIandShow(); 
    } 
} 
+1

SwingのGUIオブジェクトを構築し、[イベントディスパッチスレッド(http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)で_のみ_操作されなければなりません。 – trashgod

+0

JSomethingのすべての意味は、_using_(拡張)に対してのものであることに注意してください。あるいは他の方法はラウンド:あなた自身がそれらの拡張を参照してください場合、あなたは間違って何かを高い確率があります;-) – kleopatra

答えて

2

を作成しましたActionListenerをメニュー項目に追加すると、JMenuが追加されます。あなたがやっていることは、アクションリスナーを持つメニュー項目を作ることです。その後、そのメニュー項目のインスタンスメソッドを使用して、完全に無関係のJMenuBar/JMenu/JMenuItemを作成し、JFrameに添付します。

2

ClsMenuクラスはActionListenerを実装していますが、自動的にイベントを受け取るようなインターフェイスを実装するわけではありません。

そのオブジェクトが、それは適切な時にリスナーに警告する必要があります知っているように、あなたは、あなたが興味を持っているオブジェクトへのあなたのActionListenerを追加する必要があります。あなたのケースでは、メニューに興味があるので、リスナーを追加する必要があります。

いくつかの参照リンク:

  1. Swingのチュートリアルabout menus
  2. リスナー
  3. How to write an ActionListenerチュートリアル
2

私はいくつかのコードを書いているを追加するときに使用しているものであるObserver design pattern、これは例として見ておくと便利です:link here

hereという良いチュートリアルもあります。これは私のコードに基づいています。

関連する問題