Когда я набираю символ SPACE в автозаполнении ComboBox, я могу получить символ пробела, который должен быть принят, кроме кода addEventFilter, который я использую для управления им, умножает и вставляет пробел для каждого символа, ранее набранного до пробела.Вы можете увидеть пример снимка экрана ниже, где 3 пробела были добавлены после 3 символов (ive), затем 4 пробела добавлены после того, как я добавил дополнительный символ (t), каждый после ввода одного пробела, и пробелы появляются только после ввода Iследующий символ (например, 'm').
Я пробовал это с автозаполнением ContolsFX, но он не может обработать не редактируемый ComboBox - и не могне найти ничего наоборот.В онлайн-случаях, которые я исследовал, было рекомендовано использовать всплывающий скин ComboBox - addEventFilter для управления событием персонажа SPACE.Почти во всех случаях это было потреблять () и препятствовать выделению и закрытию пространства.Я не нашел ничего, что строго позволило бы войти в пространство.Я пытался добавить пробел в коде до и после этого кода события, но событие addEventFilter event.consume () удалит его.Символ ПРОБЕЛ появится только в том случае, если я справлюсь с его добавлением в методе addEventFilter.Я пробовал разные события, такие как KeyEvent.ANY, KeyEvent.KEY_TYPED и KeyEvent.KEY_RELEASE, и читал документацию по KeyEvent, но только KeyEvent.KEY_PRESSED, по-видимому, допускает символ SPACE, он просто умножает количество пробелов и не увеличиваетне вставлять до следующего символа текста.
ComboBoxListViewSkin cbSkin = cbSkin = new ComboBoxListViewSkin(cmb);
// cmb является ComboBox
cbSkin.getPopupContent().addEventFilter(KeyEvent.KEY_PRESSED, (event) -> {
if(event.getCode() == KeyCode.SPACE){
filter += " ";
event.consume();}
});