我正在使用ControlsFX' CheckComboBox并想要收听菜单的开启和关闭事件。有没有办法做到这一点?
我需要这个,当用户关闭菜单/离开字段时提交完成的更改。在TextFields中,我在用户点击Enter时执行此操作,使用此控件似乎不合适。或者,我可以尝试以某种方式使用focusedProperty
。
答案 0 :(得分:1)
我用过
//Commit only when box closes
checkComboBox.addEventHandler(ComboBox.ON_HIDDEN, event -> {
System.out.println("CheckComboBox is now hidden.");
});
看起来很干净。
答案 1 :(得分:0)
老问题但可能对某人有所帮助。原始资料来自:Olivier Vanrumbeke的https://bitbucket.org/controlsfx/controlsfx/issues/462/checkcombobox-ignores-prefwidth-maybe-any
要从CheckComboBox到达组合框,请在皮肤不为空时尝试此操作:
CheckComboBoxSkin skin = (CheckComboBoxSkin)checkComboBox.getSkin();
ComboBox combo = (ComboBox)skin.getChildren().get(0);
combo.showingProperty().addListener((obs, hidden, showing) -> {
if(hidden) performTaskWhenPopUpCloses();});
如果它还没有设置(皮肤为空),试试这个(丑陋的解决方法):
private final ChangeListener<Skin> skinListener = (skinObs, oldVal, newVal) -> {
if (oldVal == null && newVal != null) {
CheckComboBoxSkin skin = (CheckComboBoxSkin) newVal;
ComboBox combo = (ComboBox) skin.getChildren().get(0);
combo.showingProperty().addListener((obs, hidden, showing) -> {
if(hidden)
performTaskWhenPopUpCloses();
});
}
};
checkComboBox.skinProperty().addListener(skinListener);
(版本8.40.9)