我想创建一个事件处理程序来侦听多个键组合,例如同时按住 Ctrl 和 C 。
为什么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");
}
};
});
答案 0 :(得分: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");
}
}
});
答案 1 :(得分:5)
解决此问题的一种方法是创建一个KeyCombination
对象,并将其部分属性设置为您在下面看到的内容。
尝试以下方法:
textfield.getScene().getAccelerators().put(new KeyCodeCombination(
KeyCode.C, KeyCombination.CONTROL_ANY), new Runnable() {
@Override public void run() {
//Insert conditions here
textfield.requestFocus();
}
});
答案 2 :(得分:1)
这会有所帮助。 KeyCombination。
final KeyCombination keyComb1=new KeyCodeCombination(KeyCode.C,KeyCombination.CONTROL_DOWN);
答案 3 :(得分:0)
更加简洁(避免使用new KeyCombination()
):
public void handle(KeyEvent event) {
if (event.isControlDown() && (event.getCode() == KeyCode.C)) {
System.out.println("Control+C pressed");
}
};
其他修饰键也有KeyEvent.isXXXDown()
类型的方法。