「a」と言う1つのアイテムを含む1つのコンボボックスがあります。アイテム「a」の手動選択が行われたときにのみ呼び出されるように、そのコンボボックスのアクションリスナーを呼び出したいです。ItemStateChanged も試してみましたが、Action Listener と同じように動作します。
どうすればいいですか?
「a」と言う1つのアイテムを含む1つのコンボボックスがあります。アイテム「a」の手動選択が行われたときにのみ呼び出されるように、そのコンボボックスのアクションリスナーを呼び出したいです。ItemStateChanged も試してみましたが、Action Listener と同じように動作します。
どうすればいいですか?
次の例を見てください。
// Create an editable combobox
String[] items = {"item1", "item2"};
JComboBox cb = new JComboBox(items);
cb.setEditable(true);
// Create and register listener
MyItemListener actionListener = new MyItemListener();
cb.addItemListener(actionListener);
class MyItemListener implements ItemListener {
// This method is called only if a new item has been selected.
public void itemStateChanged(ItemEvent evt) {
JComboBox cb = (JComboBox)evt.getSource();
// Get the affected item
Object item = evt.getItem();
if (evt.getStateChange() == ItemEvent.SELECTED) {
// Item was just selected
} else if (evt.getStateChange() == ItemEvent.DESELECTED) {
// Item is no longer selected
}
}
}
1 つの ComboBox 項目だけのイベントをリッスンできるとは思いませんが、コンボ ボックス全体をリッスンする場合、コールバックで、イベントを処理する (または無視する) 前に選択した項目を確認できます。
Sumit Singhが提供する例で、影響を受けるアイテムを確認します
// Get the affected item
Object item = evt.getItem();
//check item
if(item == <the item you want to watch>)
{
//process
}
2つのアクションリスナーを作成するのはどうですか.1つは「a」が選択されているかどうかを確認し、選択されている場合は2番目のアクションを呼び出します