How to prevent closing of AutoCompleteCombobox popupmenu on SPACE key press in JavaFX

拈花ヽ惹草 提交于 2019-11-30 09:22:05

问题


I have created a AutoCompleteCombobox in JavaFX with the help of code mentioned on https://github.com/jesuino/javafx-combox-autocomplete/blob/master/src/main/java/org/fxapps/ComboBoxAutoComplete.java

But issue is that combobox popup closes when user presses SPACE key. I want to continue filtering with space character and prevent popup from closing.

I have handled all three events (key press, key release, key typed) on combobox but no solutions. I think it is being caused by key press event on combobox item list view.

Bug is mentioned on https://bugs.openjdk.java.net/browse/JDK-8087549enter link description here

I just want to know how can I override the event handler which handles SPACE key press.


回答1:


I have been trying to create a AutoCompleteCombobox as well and was wondering why the popup gets closed every time you enter space, until I got your hint that the actual bug is in the ComboBoxListViewSkin class.

You just need to replace the skin of the ComboBox with a new one, which has an EventFilter.

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

I only tested this solution with Oracle Java 10 on Ubuntu, but it should work on other platforms as well.



来源:https://stackoverflow.com/questions/50013972/how-to-prevent-closing-of-autocompletecombobox-popupmenu-on-space-key-press-in-j

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!