ユーザがTestSuiteをクリックしてMenuItemを動的に追加したときにイベントをキャッチしたいと思います。ClickイベントハンドラをJMenuに追加する
JMenu menu5 = new JMenu("TestSuite");
Java Swingでこれを行う方法は? addActionListener(this)を追加することで、すべてのJMenuItemクリックイベントを捕捉できます。しかし、今回はJMenuItemではなく、JMenuです。
ユーザがTestSuiteをクリックしてMenuItemを動的に追加したときにイベントをキャッチしたいと思います。ClickイベントハンドラをJMenuに追加する
JMenu menu5 = new JMenu("TestSuite");
Java Swingでこれを行う方法は? addActionListener(this)を追加することで、すべてのJMenuItemクリックイベントを捕捉できます。しかし、今回はJMenuItemではなく、JMenuです。
JButtonにイベントを追加するのと同じように、ActionListenerインターフェイスを使用できます。
menu5.addActionListener(this);
ここで、 "this"は、上記のサンプルでActionListenerインターフェイスを実装しているクラスの参照です。同じクラスです。
あなたはmenu5.add(新しいのMenuItem(「メニューITEM1」))を使用することができ、メニューを追加する
(1-)ActionListenerをJMenuItemに追加できますが、JMenuには追加できません。 – camickr
あなたはどれくらい愚かですか?行って、java doc –
'あなたはどれくらい愚かなのか確認してください。行って、javaのドキュメントをチェック ' - 私はより明確にすべきだと思います。 ActionListenerをJMenuに追加することはできますが、メニューをクリックするとリスナーは呼び出されません。これは、OPが質問している理由です。具体的には、JMenuItemでは動作したが、JMenuでは動作しないActionListenerが記述されていました。 – camickr
あなたはJMenu
にMenuListener
を追加し、menuSelected
イベントをリッスンすることができます。これにより、ポップアップが表示される前に、メニュー項目をメニューに動的に追加/削除することができます。
アクセラレータキーを使用すると、マウスリスナーを追加すると失敗します。 –
@BillKアクセラレータをメニューに追加することはできません。 "nmenomics"を意味すると思います。この場合、MenuListenerが呼び出されます。私が提案したように、実際の要件に基づいてソリューションを選択する必要があります。メニューはこのように使用するようには設計されていません。 – camickr
多くのプログラムは、状態に基づいてメニュー項目を追加したり削除したりします。要件のセットに遭遇していないため、無効と見なすべきではありません。 –
(1-) 'ユーザーがTestSuiteをクリックしていくつかのMenuItemを動的に追加したとき' - これは貧弱な設計です。ユーザーが「いくつかのMenuItemを追加したい」とき、または単にポップアップメニューを表示したいときは、どのように知っていますか?おそらく、最初のメニュー項目は「追加...」メニュー項目でなければなりません。 – camickr
これは完全に論理的な質問です。メニュー項目を「追加」するとは考えないでください。マーカスは、その時点で状態に基づいて押されるたびにメニューの内容を動的に作成したいと考えています。彼の「追加」の使用はおそらく問題の簡素化でした。 –
@BillK、はいこれは合理的であるたびにメニューを完全に "再構築"しているかどうかわかります。いずれにしても、私のコメントは、「追加する」という上記の要求に向けられていました。 – camickr