KeyEvent为单键释放生成了三次

时间:2015-06-24 09:49:19

标签: java javafx keyevent

我正在编写一个应该响应缩放命令的应用程序,我也喜欢那些由键盘触发的应用程序(例如,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键一起按下。

知道这里发生了什么,以及如何防止这种情况发生?

注意:+, - 和=键的数字键盘版本表现得很好,到目前为止我尝试过的其他键也是如此;这只是“正常”' ='表现得很奇怪的关键。

0 个答案:

没有答案