当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFX中防止在SPACE按键上关闭AutoCompleteCombobox弹出菜单

柴增
2023-03-14

在上面提到的代码的帮助下,我在JavaFX中创建了一个AutoCompleteComboboxhttps://github.com/jesuino/javafx-combox-autocomplete/blob/master/src/main/java/org/fxapps/ComboBoxAutoComplete.java

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

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

Bug被提到https://bugs.openjdk.java.net/browse/JDK-8087549enter链接描述

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

共有2个答案

卢朝
2023-03-14

作为补充,这也适用于java 8,你只需要导入内部Skin类:

import com.sun.javafx.scene.control.skin.ComboBoxListViewSkin;
轩辕阳焱
2023-03-14

我一直在尝试创建一个AutoCompleteCombobox,并且想知道为什么每次你进入空格时弹出窗口都会关闭,直到我得到你的提示,实际的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);

我只在Ubuntu上用OracleJava10测试了这个解决方案,但它也应该在其他平台上工作。

 类似资料:
  • 问题内容: 我借助https://github.com/jesuino/javafx-combox- autocomplete/blob/master/src/main/java/org/fxapps/ComboBoxAutoComplete.java上 提到的代码在JavaFX中创建了AutoCompleteCombobox 但是问题是,当用户按下空格键时,组合框弹出窗口关闭。我想继续使用空格字

  • 不知道为什么会投反对票,我问了一个简单的问题,有人回答了。我不能那样做,那就试试别的吧。将使用true false来测试进入模拟循环的位置。

  • 我有一个上下文菜单,它包含一个带有一些控件的CustomMenuItem。单击按钮时,会自动显示对话框和隐藏上下文菜单。问题是:我想在对话框显示时阻止关闭上下文菜单。我该如何解决这个问题呢? 我已经追踪到这件事了。当对话框打开时,将触发一个FocusUngrabEvent.Focus_Ungrab事件,该事件在PopupWindow中处理。我已经尝试在FocusUngrabEvent.Focus_

  • 我正在开发一个Android应用程序。在页面底部的一个活动中,我显示了一个popupWindow,并用这个popupWindow替换了键盘。这个popupWindow内部有一个搜索视图,所以当搜索视图处于焦点时,键盘将被显示,popupWindow将向上滑动。现在,当我按下后退按钮(手机的后退按钮),然后键盘和弹出窗口都被关闭。所以,我想在这里只关闭键盘,弹出窗口应该在键盘关闭后向下滑动。 我尝试

  • 我有一个控制器。用于场景的java。fxml和控制器设置。用于WindowsSettings.fxml的java。在控制器中。java I使用以下方法创建一个新的弹出窗口(无对话框): 我想在关闭新弹出窗口时保存设置,但这不适用于stage.setOnCloseRequest。

  • 问题内容: 我尝试使搜索栏快速显示,但是当我按下搜索栏时,无法在屏幕上关闭键盘。当我尝试使用textfield时,此代码可以很好地工作。 当我按出文本框然后键盘消失时,它可以工作。我想用我的搜索栏来做类似的事情,因为当我使用搜索栏并使用像文本字段一样的方式时,它根本不起作用。任何参考或代码对我来说都是非常有用的。 问题答案: 试试这个 : 如果您不是通过编程方式创建的,而是从库中拖动了一个搜索栏,