当前位置:  开发笔记 > 编程语言 > 正文

JComboBox选择更改侦听器?

如何解决《JComboBox选择更改侦听器?》经验,为你挑选了5个好方法。

无论什么时候做出选择,我都试图让事件发生JComboBox.

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

我试过用actionPerformed(),但它永远不会开火.

如果没有超越模型JComboBox,我就没有想法了.

如何获得有关选择更改的通知JComboBox?**

编辑:我要道歉.事实证明我使用了一个行为不端的子类JComboBox,但是我会留下问题,因为你的答案是好的.



1> jodonnell..:

它应该响应ActionListeners,如下所示:

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

@John Calsbeek正确地指出它addItemListener()也会起作用.ItemEvents但是,您可以获得2 ,其中一个用于取消选择先前选择的项目,另一个用于选择新项目.只是不要使用这两种事件类型!


我更喜欢ItemListener(只需确保检查ItemEvent以查看它是选择还是取消选择).即使选择未更改(即,如果用户单击已选择的项目),也可以触发ActionListener.这可能是也可能不是你想要的.
我知道这个问题很老,但为了补充,如果调用addItem方法,也会触发ActionListener.

2> Viacheslav..:

代码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());


@dmark我认为这是合理的,因为没有任何改变.也许你应该以某种方式重新组织你的行为而不依赖于这种情况.
我尝试了这段代码,一个问题是,当我单击已选择的项目时,将不会触发侦听器,因为没有状态更改。

3> John Calsbee..:

我会尝试itemStateChanged()的方法ItemListener如果jodonnell的解决方案失败接口.



4> Ahuramazda..:

这里创建一个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
        }
    });
}


这个答案增强了之前的答案...?请不要重复!不相关:从不对组件进行任何手动调整大小/定位,这是合适的LayoutManager的专有任务

5> 小智..:

你可以尝试这些

 int selectedIndex = myComboBox.getSelectedIndex();

-要么-

Object selectedObject = myComboBox.getSelectedItem();

-要么-

String selectedValue = myComboBox.getSelectedValue().toString();

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有