- ベストアンサー
イベントが発生したボタンを特定する方法
たとえば、ボタンが配列でたくさん存在する場合 そのうちのどれかひとつが押されてイベントが発生して、ActionPerformed()が呼ばれますが ここでどのボタンが押されたかを瞬時に特定する方法はありませんか? とりあえずはActionEvent.getSource()でできますが、ボタンが大量にある場合にはたとえFor文などを使っても効率が悪い気がします。 何か良い方法はありませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ボタンを特定したあとは具体的に何をするのでしょうか? たとえばSQLのWHERE条件にいれるとかであれば、getActionCommandを使えば特にループする必要はないと思います。 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String sql = "SEECT * FROM SampleTable WHERE TelNo='" evt.getActionCommand + "'" }
その他の回答 (1)
- HarukaV49
- ベストアンサー率53% (48/89)
具体的な処理の内容が分からないので、あくまでも一般論ですが。 if( event.getSource() == button1 ) { ... else if( event.getSource() == button2 ) { ... else if( event.getSource() == button3 ) { ... } この様に、ボタンオブジェクトを識別して、完全に独立した処理を 実装する場合には、各ボタンに応じて個別のイベントクラスを 提供する方法がオブジェクト指向設計的に優れています。 また、ボタンコンポーネントのサブクラスを作成して ((OriginalButton)event.getSource()).getOriginalID() というようなメソッドを持たせる方法が有効な場合も多々あります。 具体例を挙げると、ゲームのマインスイーパーのように、ボタンの 位置が識別できるだけで良く、処理内容が同一な時などです。
お礼
ご回答ありがとうございます!! はじめはgetSourceでやっていたのですが、ボタンが40個ほどあるため40個もの条件分けなどやっていられませんで、別の方法を探していたところでした。 ActionCommandなるString型変数があったみたいなのでそっちで試してみます。 どうもありがとうございました。
お礼
ありがとうございます!! ActionCommandこそ探していたものでした! 助かりました!!