1

JMenuItem でクリック イベントを実行するコードを作成しましたが、デバッグ中に発生しません。(このフォーラムでこれらの質問をすることになっていないことはわかっていますが、このフォーラムは初めてです)

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

3 に答える 3

2

ActionListenerを追加するメニュー項目にを追加する必要がありますJMenu。あなたがしているのは、アクション リスナーを持つメニュー項目を作成することです。次に、そのメニュー項目のインスタンス メソッドを使用して、完全に無関係な // を作成しJMenuBarJMenuそれJMenuItemJFrame.

于 2012-01-13T19:26:57.503 に答える
2

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

関心のあるオブジェクトに your を追加ActionListenerして、適切なタイミングでリスナーに警告する必要があることをオブジェクトが認識できるようにする必要があります。あなたの場合、メニューに興味があるので、リスナーをメニューに追加する必要があります。

いくつかの参照リンク:

  1. メニューに関するSwing チュートリアル
  2. リスナーを追加するときに使用するObserverデザイン パターン
  3. ActionListenerチュートリアルの書き方
于 2012-01-13T22:21:27.053 に答える
2

私はあなたが例として見るのに役立つかもしれないいくつかのコードを書いています:ここにリンク.

良いチュートリアルhereもあります。これは、コードのベースとなった場所です。

于 2012-01-13T22:25:30.647 に答える