我正在编写一个应该响应缩放命令的应用程序,我也喜欢那些由键盘触发的应用程序(例如,CMD / CTRL和+(或=)用于放大)。除了一件奇怪的事情之外,我的工作得很好:' ='当我按住CMD键(我在Mac上)时,键(键盘顶部的正常键,数字和' - 键)旁边会生成三次键。奇怪的是,当你没有持有CMD密钥时,这不会发生...
以下程序显示了我的意思:
package test_keypress;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Test_KeyPress extends Application {
static int nr = 0;
public void start(Stage stage) {
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
Label label = new Label("Press Key");
Label keyReleasedTxt = new Label();
root.getChildren().addAll(label, keyReleasedTxt);
Scene scene = new Scene(root, 400, 300);
scene.setOnKeyReleased((KeyEvent e) -> {
keyReleasedTxt.setText("Key Released: " + e.getCode() + " = " + e.getText());
System.out.println("Key Released: " + e.getCode() + " = " + e.getText());
e.consume();
});
stage.setTitle("Key Event test");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这是它产生的输出:
Key Released: EQUALS = =
< =只按' ='键盘上的键
Key Released: EQUALS = =
Key Released: EQUALS = +
Key Released: EQUALS = =
Key Released: COMMAND =
< =何时' ='与CMD键一起按下。
知道这里发生了什么,以及如何防止这种情况发生?
注意:+, - 和=键的数字键盘版本表现得很好,到目前为止我尝试过的其他键也是如此;这只是“正常”' ='表现得很奇怪的关键。