当前位置: 首页 > 面试题库 >

如何在JavaFX中防止在SPACE键上关闭AutoCompleteCombobox popupmenu

牟辰龙
2023-03-14
问题内容

我借助https://github.com/jesuino/javafx-combox-
autocomplete/blob/master/src/main/java/org/fxapps/ComboBoxAutoComplete.java上
提到的代码在JavaFX中创建了AutoCompleteCombobox

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

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

错误是在提到https://bugs.openjdk.java.net/browse/JDK-8087549

在此处输入链接的描述

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


问题答案:

我也一直试图创建一个AutoCompleteCombobox,并且想知道为什么每次您输入空格时都会关闭弹出窗口,直到我提示您实际的错误在
ComboBoxListViewSkin 类中。

您只需要用一个具有EventFilter的新蒙皮替换ComboBox的蒙皮。

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

我仅在Ubuntu上使用Oracle Java 10测试了该解决方案,但它也应在其他平台上运行。



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

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

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

  • 我是否缺少一些配置选项来防止它崩溃?通常情况下,所有异常都会被捕获并返回一个500错误,而服务器仍然处于活动状态。

  • 我正在用场景构建器创建一个JavaFX应用程序。我在开头加了一段视频。所以我想播放视频之前,我的应用程序启动在全屏模式。问题是当它停止时,我只看到黑色尖叫,什么也没发生,我想这是因为视频是全屏的,它没有自动关闭。 我也有一个bug,在视频开始之前,我的主窗口的一些闪烁。我想这是因为视频放在控制器中,在我的应用程序启动后开始。 公共类主扩展应用程序{ 控制器类:

  • 我有一个主(屏幕)gui窗口,需要打开几个“多输入”窗口(jdialog或当不可能使用jframe时),例如添加首选项(4个文本字段,带有2个文件选择器和2个单选按钮)。在这些JDialogs(或JFrames)中按OK/Cancel时,我的整个应用程序将关闭。我不想那样。我该怎么防止呢? 第一次尝试:我尝试了intelliJ选项“新- 第二次尝试:我“手工”编写了一个类,创建了一个JDialog