在我的应用程序中,我有一个使用加速器的屏幕。我正在使用功能键 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/