如何防止JavaFX中空格键按下时自动完成组合框弹出菜单关闭

如何防止JavaFX中空格键按下时自动完成组合框弹出菜单关闭,java,javafx,combobox,javafx-8,Java,Javafx,Combobox,Javafx 8,在上面提到的代码的帮助下,我在JavaFX中创建了一个AutoCompleteCombobox 但问题是,当用户按下空格键时,组合框弹出窗口关闭。我想继续用空格字符过滤,防止弹出窗口关闭 我在combobox上处理了所有三个事件(按键、释放键、键入键),但没有解决方案。 我认为这是由组合框项目列表视图上的按键事件引起的 上面提到了Bug 我只是想知道如何覆盖处理空格键按下的事件处理程序。我也一直在尝试创建一个自动完成的ComboBox,并且想知道为什么每次输入空格时弹出窗口都会关闭,直到我得到您

在上面提到的代码的帮助下,我在JavaFX中创建了一个AutoCompleteCombobox

但问题是,当用户按下空格键时,组合框弹出窗口关闭。我想继续用空格字符过滤,防止弹出窗口关闭

我在combobox上处理了所有三个事件(按键、释放键、键入键),但没有解决方案。 我认为这是由组合框项目列表视图上的按键事件引起的

上面提到了Bug


我只是想知道如何覆盖处理空格键按下的事件处理程序。

我也一直在尝试创建一个自动完成的ComboBox,并且想知道为什么每次输入空格时弹出窗口都会关闭,直到我得到您的提示,实际的bug在ComboBoxListViewSkin类中

您只需要用一个新的组合框替换组合框的外观,它有一个EventFilter

ComboBoxListViewSkin<T> comboBoxListViewSkin = new ComboBoxListViewSkin<T>(comboBox);
comboBoxListViewSkin.getPopupContent().addEventFilter(KeyEvent.ANY, (event) -> {
    if( event.getCode() == KeyCode.SPACE ) {
        event.consume();
    }
});
comboBox.setSkin(comboBoxListViewSkin);
ComboBoxListViewSkin ComboxListViewSkin=新建ComboxListViewSkin(comboBox);
comboBoxListViewSkin.getPopupContent().addEventFilter(KeyEvent.ANY,(event)->{
if(event.getCode()==KeyCode.SPACE){
event.consume();
}
});
comboBox.setSkin(comboBoxListViewSkin);

我只在Ubuntu上用Oracle Java 10测试了这个解决方案,但它也应该可以在其他平台上使用。

作为补充,它也可以在Java 8中使用,您只需导入内部皮肤类:

import com.sun.javafx.scene.control.skin.ComboBoxListViewSkin;

按照她的建议,联系该特定版本的所有者:如果你想让它与所有角色一起工作,请给我发送一份PR。如果提到了错误,我只需要覆盖提到的方法好的挖掘:)多旧的错误。。