Java JComboBox工作

Java JComboBox工作,java,swing,jcombobox,actionlistener,itemlistener,Java,Swing,Jcombobox,Actionlistener,Itemlistener,我有一个组合框,其中包含一个项目,比如说“a”。我想调用该组合框的操作侦听器,使其仅在手动选择项目“a”时被调用。 我还尝试了ItemStateChanged,但它的工作原理与Action Listener类似 我该怎么做呢?看看下面的例子 // Create an editable combobox String[] items = {"item1", "item2"}; JComboBox cb = new JComboBox(items); cb.setEditable(true); /

我有一个组合框,其中包含一个项目,比如说“a”。我想调用该组合框的操作侦听器,使其仅在手动选择项目“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
    }
}
}

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

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

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

//check item
if(item == <the item you want to watch>)
{
    //process
}
//获取受影响的项目
对象项=evt.getItem();
//检查项目
如果(项目==)
{
//过程
}

制作两个ActionListener怎么样,一个会看到是否选择了“a”,如果是,它会调用第二个

你能不能就如何实现发表适当的解释和代码,因为这似乎与我无关……在设置初始选择之前添加侦听器似乎需要这样做。如果这不是问题所在,发布您的日志可能有助于澄清。