- PR -

複数のJComboBoxを使い分けるには?

1
投稿者投稿内容
fuzuki
常連さん
会議室デビュー日: 2003/08/23
投稿数: 48
投稿日時: 2004-04-13 18:15
こんにちは。

プログラム内でJComboBoxを2つ使用しているのですが、どちらのコンボボックスが変更されたかを判断するメソッドなどはないのでしょうか?

どちらのボックスが変更された場合もgetActionCommand()でcomboBoxChangedというのが返されますが、これではどちらが変更されたのかまでは分かりません。APIを調べてみるとgetModifiersというのがあったので、これを試してみたのですが、なぜかどちらのコンボボックスを変更した場合も16という意味不明な数字が返されます。

APIに載っていたActionEventの他のメソッドも関係なさそうですし。
すみませんが、よろしくお願いいたします。

コード:
if(e.getActionCommand().equals("comboBoxChanged"))
{
  if(combo1が変更されていたら) { // この条件の部分をどのように書いたら良いのか?
    String str = (String)combo1.getSelectedItem();
    // 何か処理を行う
  }
  else if(combo2が変更されていたら) {
    String str = (String)combo2.getSelectedItem();
    // 何か処理を行う
  }
}

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-04-13 18:21
2つのコンボボックスの actionCommand が全く同じものに設定されているから判別できないんですね。
setActionCommand() で別のものを設定するか、 e.getSource() にてどちらのコンボボックスからのイベントかを判定することで処理できると思います。
#恐らく IDE が生成したコードで混乱してしまってるのではないでしょうか?リスナやアダプタ、イベントの役割を把握すると良さそうです。

もちろんイベントをハンドルするインスタンスを別にすることでも Ok です。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-04-13 18:23 ]
fuzuki
常連さん
会議室デビュー日: 2003/08/23
投稿数: 48
投稿日時: 2004-04-13 18:35
インギさん、早速のご返答ありがとうございます。

setActionCommand()で別の名前を設定するというのは知りませんでした。これでうまくいきました。

getSourceは質問の前に試してみたのですが、どちらのボックスからかという情報は含まれてなかったように思います。

いずれにしましても、助かりました。ありがとうございます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-04-14 02:20
解決したとのことでなによりです。
ちなみに getSource() ではイベントが発生したコンポーネントを取得できるので == にて判定できたと思います。
1

スキルアップ/キャリアアップ(JOB@IT)