【发布时间】:2019-09-01 01:11:36
【问题描述】:
当我在自动完成组合框中键入空格字符时,我可以获得要接受的空格字符,但我用来管理它的 addEventFilter 代码会相乘并为之前在空格之前键入的每个字符插入一个空格。您可以在下面看到一个屏幕截图示例,其中在 3 个字符 (ive) 之后添加了 3 个空格,然后在我包含一个附加字符 (t) 之后添加了 4 个空格,每个空格都在键入一个空格之后,并且空格仅在我键入后出现下一个字符(例如“m”)。
我确实尝试过使用 ContolsFX AutoComplete,但它无法处理不可编辑的 ComboBox - 并且找不到任何相反的东西。在我研究的在线案例中,推荐使用 ComboBox 的弹出皮肤 - addEventFilter 来管理 SPACE 字符事件。在几乎所有情况下,它都是消耗()并防止空间被选择和关闭。我没有找到任何严格允许进入该空间的东西。我尝试在此事件代码之前和之后在代码中添加 SPACE,但 addEventFilter event.consume() 将删除它。只有当我在 addEventFilter 方法中管理它的添加时,SPACE 字符才会出现。我尝试了不同的事件,例如 KeyEvent.ANY、KeyEvent.KEY_TYPED 和 KeyEvent.KEY_RELEASE 并阅读了有关 KeyEvent 的文档,但似乎只有 KeyEvent.KEY_PRESSED 允许使用空格字符,它只是将空格数相乘,并没有'直到下一个文本字符才插入。
ComboBoxListViewSkin cbSkin = cbSkin = new ComboBoxListViewSkin(cmb);
// cmb 是组合框
cbSkin.getPopupContent().addEventFilter(KeyEvent.KEY_PRESSED, (event) -> {
if(event.getCode() == KeyCode.SPACE){
filter += " ";
event.consume();}
});
【问题讨论】:
标签: combobox autocomplete javafx-8