我试图让一个事件在做出选择时触发 JComboBox.

我遇到的问题是没有明显的 addSelectionListener() 方法。

我尝试过使用 actionPerformed(), ,但它永远不会点火。

缺少覆盖模型 JComboBox, ,我没主意了。

我如何收到有关选择更改的通知 JComboBox?**

编辑: 我必须道歉。事实证明我使用的是一个行为不当的子类 JComboBox, ,但我会留下这个问题,因为你的回答很好。

有帮助吗?

解决方案

它应该响应 动作监听器, , 像这样:

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

@约翰·卡尔斯贝克 正确地指出 addItemListener() 也会起作用。你可能会得到2 ItemEvents, 不过,一个用于取消选择先前选择的项目,另一个用于选择新项目。只是不要同时使用这两种事件类型!

其他提示

代码示例 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 的解决方案失败,则接口。

这是创建一个组合框,添加一个监听器来更改项目选择:

    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