JComboBox の選択はリスナーを変更しますか?
-
09-06-2019 - |
質問
から選択が行われるたびにイベントを起動させようとしています 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();
私は最近、これとまったく同じソリューションを探していたところ、最後に選択した項目と新しく選択した項目に特定の変数を割り当てずに、シンプルなソリューションを見つけることができました。そして、この質問は非常に役に立ちましたが、私が必要とした解決策は提供しませんでした。これで私の問題は解決しました。あなたや他の人の問題も解決することを願っています。ありがとう。