JavaFX - 当文本字段具有焦点时加速器不工作

标签 java javafx javafx-8 accelerator

在我的应用程序中,我有一个使用加速器的屏幕。我正在使用功能键 F3 在我的应用程序中执行操作。它每次都工作正常,但是当我点击此屏幕上的任何 TextField 时,功能键不会执行。

这是我设置加速器的代码:

    scene.getAccelerators().put(
            new KeyCodeCombination(KeyCode.F3),
            new Runnable() {
                @Override
                public void run() {
                    // do sth here
                }
            }
    );

当我单击我的文本字段然后按下 F3 功能键时,它不起作用。 有人知道解决方案吗?

最佳答案

这适用于使用 Java 1.8.0_45 的我。但是,我在可编辑组合框字段中遇到了类似的问题。

编辑:

经过进一步调查,它似乎也出现在文本字段中。我使用以下自定义类代替文本字段解决了这个问题:

public class ShortcutFriendlyTextField extends TextField{

    public ShortcutFriendlyTextField() {
        super();
        addEventHandler(KeyEvent.KEY_RELEASED,new EventHandler<KeyEvent>() {

            @Override
            public void handle(KeyEvent event) {
                //handle shortcuts if defined
                Runnable r=getScene().getAccelerators().get(new KeyCodeCombination(event.getCode()));
                if(r!=null) {
                    r.run();  
                }
            }
        }); 
    }
}

关于JavaFX - 当文本字段具有焦点时加速器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239019/

相关文章:

java - 类被实例化多次;如何知道正在调用的是哪一个?

java - 为什么接口(interface)方法没有主体

webview - javaFX webview window.onload 在 loadworker 成功之前被触发

java - 应用程序 Activity 期间发生应用程序挂起或 "Not on FX application thread"

javafx - 以编程方式显示/隐藏虚拟键盘

java - Bck2Brwsr 与 JavaFX 一起?

java - 如何解析 Tue Apr 11 00 :00:00 CEST 2017 format in Java? 中的日期

java - HTTPServer 发布参数

java - FXML 按钮导致空指针,硬编码按钮则不会

JavaFX TableView 具有两个固定列,最后一个列占用可用空间