質問

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

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

使ってみました actionPerformed(), しかし、決して発火しません。

のモデルをオーバーライドするだけではありません JComboBox, アイデアが尽きました。

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

編集: 謝らなければなりません。不正な動作をするサブクラスを使用していたことが判明しました JComboBox, しかし、あなたの答えは良いので、質問はそのままにします。

役に立ちましたか?

解決

に応答する必要があります アクションリスナー, 、 このような:

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

@ジョン・カルスビーク それは正しく指摘している addItemListener() も機能します。2個もらえるかも ItemEvents, ただし、1 つは以前に選択した項目の選択解除用で、もう 1 つは新しい項目の選択用です。両方のイベント タイプを使用しないでください。

他のヒント

のコード例 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());

試してみます itemStateChanged() の方法 ItemListener jodonnell のソリューションが失敗した場合のインターフェイス。

ここでは、項目選択変更のリスナーを追加する ComboBox を作成しています。

    JComboBox comboBox = new JComboBox();

    comboBox.setBounds(84, 45, 150, 20);
    contentPane.add(comboBox);

    JComboBox comboBox_1 = new JComboBox();
    comboBox_1.setBounds(84, 97, 150, 20);
    contentPane.add(comboBox_1);
    comboBox.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent arg0) {
            //Do Something
        }
    });
}

これらを試してみてはいかがでしょうか

 int selectedIndex = myComboBox.getSelectedIndex();

-または-

Object selectedObject = myComboBox.getSelectedItem();

-または-

String selectedValue = myComboBox.getSelectedValue().toString();

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top