Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jcombobox-订阅selectedItemChanged事件_Java_Swing_Actionlistener_Jcombobox_Event Listener - Fatal编程技术网

Java Jcombobox-订阅selectedItemChanged事件

Java Jcombobox-订阅selectedItemChanged事件,java,swing,actionlistener,jcombobox,event-listener,Java,Swing,Actionlistener,Jcombobox,Event Listener,每当组合框上的选定项发生更改时,我都会尝试执行一个操作。当没有通知操作侦听器时,一个特定的场景是在组合框上重置模型。我可以订阅另一个PropertyChangedListener,并在模型更改时侦听,然后提取所选项目,但我不明白为什么模型更改时所选项目更改事件不会引发数据。从视觉上看,您的选择确实发生了变化,即使您在cobox中查询所选项目,它也会从null变为某个对象。。。是否有明确的解决方案,而不是使用两个单独的侦听器?如果在重置模型时操作和项目侦听器未触发事件,则可以通过将JComboBo

每当组合框上的选定项发生更改时,我都会尝试执行一个操作。当没有通知操作侦听器时,一个特定的场景是在组合框上重置模型。我可以订阅另一个
PropertyChangedListener
,并在模型更改时侦听,然后提取所选项目,但我不明白为什么模型更改时所选项目更改事件不会引发数据。从视觉上看,您的选择确实发生了变化,即使您在cobox中查询所选项目,它也会从
null
变为某个对象。。。是否有明确的解决方案,而不是使用两个单独的侦听器?

如果在重置模型时操作和项目侦听器未触发事件,则可以通过将JComboBox子类化来自行触发这些事件:

public class MyComboBox extends JComboBox 
{
    @Override
    public void setModel(ComboBoxModel aModel) {
        super.setModel(aModel);
        fireActionEvent();
    }
}

但是我认为这是一个bug-你应该向官方bugzilla报告。

你试过使用项目侦听器而不是操作侦听器吗?这可以,但我想我会坚持传统的属性ChangedListenr