2

私は基本的にボタンがたくさんあるスイングプログラムを作成しています.リスナーを各ボタンに個別に追加するのではJPanelなく、代わりにリスナーを追加し、関数を使用してイベントを読み取る.getSource()ことができれば、物事はずっと簡単ですか?出来ますか?

4

3 に答える 3

5

コンポーネントにリスナーを追加することは、そのリスナーを内部コンポーネントにも追加することを意味するわけではありません。代わりに、ボタンのグループ(ボタン配列など)を使用して、1回の反復ですべてのボタンにリスナーを追加することを検討してください。

for(JButton button : buttonsArray)
    button.addActionListener(yourActionListener);
于 2012-11-26T12:12:18.643 に答える
2

基本的にボタンが多いswingプログラムを作成していて、各ボタンにリスナーを個別に追加するのではなく、JPanelにリスナーを追加して、.getSource()関数を使用してイベントを読み取ることができればと考えていました。 、物事はずっと簡単になりますか?出来ますか?

追加することはできません、それを行うことができるActionListenerだけMouseListenerですが、正しい方法ではありませんJButton

コードによっては、すべてのJButtonにActionListenerを追加し、どのJButtonが押されているかを判別する必要があります。

  • put/getClientProperty

  • ActionCommand

  • プログラムでinstide配列をループJButtonsし、イベントとを比較しますJButton

于 2012-11-26T12:13:25.987 に答える
1

いいえ、できません。ドキュメントをご覧ください

すべてのボタンに同じリスナーの動作がある場合は、それらをに追加しArrayList<JButton>、ループで同じインスタンスを追加しますActionListener

于 2012-11-26T12:11:20.687 に答える