161

から選択が行われるたびにイベントを発生させようとしていJComboBoxます。

私が抱えている問題は、明確なaddSelectionListener()方法がないことです。

を使用しようとしましactionPerformed()たが、決して発火しません。

のモデルをオーバーライドするJComboBoxまでもなく、アイデアがありません。

での選択変更の通知を受け取るにはどうすればよいJComboBoxですか?**

編集:お詫び申し上げます。の不正なサブクラスを使用していたことがわかりJComboBoxましたが、あなたの答えが良いので、質問はそのままにしておきます。

4

8 に答える 8

183

次のように、 ActionListenersに応答する必要があります。

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@John Calsbeekは、それもうまくいくと正しく指摘していaddItemListener()ます。ItemEventsただし、前に選択したアイテムの選択解除用に 1 つ、新しいアイテムの選択用に2 を取得する場合があります。両方のイベント タイプを使用しないでください。

于 2008-09-12T13:32:22.160 に答える
167

ItemListener実装のコード例

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

これで、選択したアイテムのみが取得されます。

次に、リスナーを JComboBox に追加するだけです

addItemListener(new ItemChangeListener());
于 2013-01-20T12:28:37.360 に答える
23

ジョドネルの解決策が失敗した場合itemStateChanged()は、インターフェースの方法を試してみます。ItemListener

于 2008-09-12T13:33:50.613 に答える
9

あなたはこれらを試すことができます

 int selectedIndex = myComboBox.getSelectedIndex();

-また-

Object selectedObject = myComboBox.getSelectedItem();

-また-

String selectedValue = myComboBox.getSelectedValue().toString();
于 2010-02-02T19:38:08.893 に答える
4

私は最近、これとまったく同じソリューションを探していましたが、最後に選択したアイテムと新しく選択したアイテムに特定の変数を割り当てずに、単純なソリューションを見つけることができました。そして、この質問は非常に役に立ちましたが、必要な解決策を提供しませんでした. これで私の問題は解決しました。あなたや他の人の問題が解決することを願っています。ありがとう。

前または最後のアイテムを取得するにはどうすればよいですか?

于 2013-02-02T22:23:08.327 に答える