Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 组合框选定的同一项操作侦听器_Java_Events_Combobox_Javafx_Javafx 8 - Fatal编程技术网

Java 组合框选定的同一项操作侦听器

Java 组合框选定的同一项操作侦听器,java,events,combobox,javafx,javafx-8,Java,Events,Combobox,Javafx,Javafx 8,如果选择了不同的值,组合框将触发事件。我还希望能够侦听所选的同一项(即valueProperty没有更改)。似乎没有办法做到这一点 我试着扩展组合框,并找到一种方法来监听关闭的小弹出菜单,但我甚至无法访问它!我能做什么 以下是我所尝试的: class ResponsiveComboBox<E> extends ComboBox<E> { public ResponsiveComboBox() { super(); assert g

如果选择了不同的值,组合框将触发事件。我还希望能够侦听所选的同一项(即valueProperty没有更改)。似乎没有办法做到这一点

我试着扩展组合框,并找到一种方法来监听关闭的小弹出菜单,但我甚至无法访问它!我能做什么

以下是我所尝试的:

class ResponsiveComboBox<E> extends ComboBox<E> {

    public ResponsiveComboBox() {
        super();
        assert getContextMenu() != null; //Asssertion failed!
        this.getContextMenu().setOnHiding((WindowEvent event) -> {
            fireEvent(new ActionEvent());
        });
    }

}
类响应组合框扩展组合框{
公共响应组合框(){
超级();
断言getContextMenu()!=null;//关联失败!
this.getContextMenu().setOnHiding((WindowEvent事件)->{
fireEvent(新的ActionEvent());
});
}
}

此事件处理程序可能在值更改之前触发。

太棒了!它同时也为我解决了onCancelEdit。再次感谢。
comboBox.showingProperty().addListener((obs, wasShowing, isShowing) -> {
    if (! isShowing) {
        System.out.println("Combo box popup hidden");
    }
});