【问题标题】:Java - JComboBox Invalidade Item Selection in ItemListenerJava - ItemListener 中的 JComboBox 无效项选择
【发布时间】:2013-06-01 15:33:38
【问题描述】:

我正在尝试在我的 ItemListener 中添加一个条件,并且只有在验证了该条件后才会选择该项目,否则我不希望用户能够选择该项目。

如何使项目侦听器上的选择无效?在项目侦听器中进行新选择?那不是无限循环吗? :o

提前非常感谢。 这是我的代码:

private final class classeComboBoxItemListener implements ItemListener {
        @Override
        public void itemStateChanged(ItemEvent e) {


            try {
                if(e.getStateChange() == ItemEvent.DESELECTED)
                    updateLabelLugares(true, (Classe) e.getItem());

                if(e.getStateChange() == ItemEvent.SELECTED)
                    updateLabelLugares(false, (Classe) e.getItem());
            } catch (Exception e1) {


                /// HERE I WANT TO INVALIDATE THE SELECTION
                /// Returning to the item selected before!

            }

        }
    }

【问题讨论】:

  • How can I invalidade a selection on item listener? - 从模型中删除项目。如果用户看到一个项目然后点击它却发现他们无法选择它会令人沮丧。当然用户会尝试多次然后报告错误,因为他们无法选择值。
  • 是的,我能做到,没想到,谢谢 ;)

标签: java selection jcombobox invalidation


【解决方案1】:

如何使项目侦听器上的选择无效?做一个新的 项目侦听器内的选择?那不是无限循环吗? :o

  • JComboBox 中删除ItemListener,然后调用JComboBox.setSelectedIndex(-1),将ItemListener 添加回JComboBox(标准和良好做法)

  • 在一个添加侦听器中创建两个无效(标准和良好实践),在第二个中删除侦听器

  • 不要将if(e.getStateChange() == ItemEvent.DESELECTED) 包裹在boolean 中,因为这样会阻止代码执行直到重置状态结束

  • if - else 用于if(e.getStateChange() == ItemEvent.DESELECTED){ .... } else { ... }

【讨论】:

  • 感谢您的回答,我会试试这个;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多