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

我尝试扩展ComboBox并找到一种方法来监听关闭的小弹出菜单,但是我什至无法访问它!我能做什么?

这是我正在尝试的:

class ResponsiveComboBox<E> extends ComboBox<E> {

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

}

最佳答案

comboBox.showingProperty().addListener((obs, wasShowing, isShowing) -> {
    if (! isShowing) {
        System.out.println("Combo box popup hidden");
    }
});


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

07-27 22:16