Как предотвратить закрытие всплывающего меню AutoCompleteCombobox при нажатии клавиши ПРОБЕЛ в JavaFX - PullRequest
0 голосов
/ 25 апреля 2018

Я создал AutoCompleteCombobox в JavaFX с помощью кода, упомянутого в https://github.com/jesuino/javafx-combox-autocomplete/blob/master/src/main/java/org/fxapps/ComboBoxAutoComplete.java

Но проблема в том, что всплывающее окно со списком закрывается, когда пользователь нажимает клавишу ПРОБЕЛ. Я хочу продолжить фильтрацию с пробелом и предотвратить закрытие всплывающего окна.

Я обработал все три события (нажатие клавиши, отпускание клавиши, набранный ключ) в комбинированном списке, но никаких решений. Я думаю, что это вызвано событием нажатия клавиши в представлении списка элементов списка.

Ошибка упоминается в https://bugs.openjdk.java.net/browse/JDK-8087549 введите описание ссылки здесь

Я просто хочу знать, как я могу переопределить обработчик событий, который обрабатывает нажатие клавиши ПРОБЕЛ.

1 Ответ

0 голосов
/ 28 августа 2018

Я тоже пытался создать AutoCompleteCombobox, и мне было интересно, почему всплывающее окно закрывается каждый раз, когда вы вводите пробел, пока я не получил вашего намека на то, что настоящая ошибка в классе ComboBoxListViewSkin .

Вам просто нужно заменить обложку ComboBox на новую, в которой есть EventFilter.

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

Я тестировал это решение только с Oracle Java 10 в Ubuntu, но оно должно работать наи другие платформы.

...