JavaFX键监听器为多键按下实现?

use*_*603 2 java javafx

我想创建一个事件处理程序来侦听多个键组合,例如hold CtrlC 同时.

为什么不if((... == Control) && (... == C))工作?

这是我尝试使用的代码:

textField.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
    public void handle(KeyEvent event) {
        if ((event.getCode() == KeyCode.CONTROL) && (event.getCode() == KeyCode.C)) {
            System.out.println("Control pressed");
        } 
    };
});
Run Code Online (Sandbox Code Playgroud)

mtr*_*rgn 6

你可以尝试这个解决方案,它对我有用!

final KeyCombination keyCombinationShiftC = new KeyCodeCombination(
KeyCode.C, KeyCombination.CONTROL_DOWN);

textField.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent event) {
        if (keyCombinationShiftC.match(event)) {
            logger.info("CTRL + C Pressed");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)


Ans*_*har 5

解决此问题的一种方法是创建一个KeyCombination对象并将其某些属性设置为您在下面看到的内容.

请尝试以下方法:

textfield.getScene().getAccelerators().put(new KeyCodeCombination(
    KeyCode.C, KeyCombination.CONTROL_ANY), new Runnable() {
    @Override public void run() {
        //Insert conditions here
        textfield.requestFocus();
    }
});
Run Code Online (Sandbox Code Playgroud)