0

我有一个组合框,其中包含一个项目,可以说“a”。我想仅在手动选择项目“a”时调用该组合框的动作侦听器。我也尝试过 ItemStateChanged,但它的工作方式类似于 Action Listener。

我该怎么做?

4

3 回答 3

1

看看下面的例子。

// 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
    }
}
}
于 2012-08-30T07:31:46.040 回答
1

我不认为你可以只监听一个 ComboBox 项的事件,但是当监听整个组合框时,在回调中你可以在处理事件(或忽略它)之前检查所选项目。

Sumit Singh提供的示例中,检查受影响的项目

// Get the affected item
Object item = evt.getItem();

//check item
if(item == <the item you want to watch>)
{
    //process
}
于 2012-08-30T07:32:57.467 回答
0

制作 2 个动作监听器怎么样,一个会查看是否选择了“a”,如果是,它将调用第二个

于 2012-08-30T07:35:49.803 回答