首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ItemStateChanged两次调用JComboBox

ItemStateChanged两次调用JComboBox
EN

Stack Overflow用户
提问于 2014-01-03 07:21:33
回答 2查看 1.1K关注 0票数 1

你好,我正在使用一个组合框,当我触发IteamStateChage事件时,该操作调用了两次。但是,如果我打了两次电话,我无法使我想做的事情成为可能。

那么,是否有任何方法只调用一次IteamStatechange evet。当我把它换成Jcombobox时。我只需要itemStatechange的一次行动。并且仅使用项状态更改。

请帮我同样的忙。提前感谢你们的到来。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-03 07:40:26

在这方面,这是预期的行为。组合框发出取消选择当前项和选择新项的信号。

itemStateChanged方法中,需要检查ItemEvent的状态以确定应该做什么。

代码语言:javascript
运行
复制
public void itemStateChanged(ItemEvent evt) {

    switch (evt.getStateChanged()) {
        case ItemEvent.DESELECTED:
            // Do what ever you want when the item is deselected
            break;
        case ItemEvent.SELECTED:
            // Do what ever you want when the item is selected
            break;
    }
}
票数 7
EN

Stack Overflow用户

发布于 2014-01-03 07:46:45

下面是如何确定更改事件是选择还是取消选择的示例:

代码语言:javascript
运行
复制
JComboBox<String> comboBox = new JComboBox<>(new String[] {"one", "two", "foo"});
 comboBox.addItemListener(new ItemListener() {
     @Override
     public void itemStateChanged(ItemEvent e) {
         System.out.println("Change");
         if(e.getStateChange() == ItemEvent.SELECTED){
             System.out.println("Selected");
         }
         if(e.getStateChange() == ItemEvent.DESELECTED){
             System.out.println("Deselected");
         } 
     }
 });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20898619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档