gpt4 book ai didi

JavaFX Canvas 未拾取关键事件

转载 作者:行者123 更新时间:2023-12-02 05:04:30 28 4
gpt4 key购买 nike

我有以下代码,显示具有 3 个连续 hello world 的 JavaFX Canvas

    StackPane root = new StackPane();

Canvas canvas = new Canvas(250,250);
canvas.setOnMouseEntered((a) -> System.out.println("hi"));
canvas.setOnMousePressed((a) -> System.out.println("focus"));
canvas.setOnKeyReleased(new EventHandler<KeyEvent>() {

@Override
public void handle(KeyEvent event) {
System.out.println("Handled");
}
});
// canvas.setOnKeyPressed((a) -> System.out.println("hi"));

GraphicsContext context = canvas.getGraphicsContext2D();
context.setFill(Color.BLUE);
final int fontSize = 15, fontSpace = 5;
context.setFont(Font.font(15));

context.fillText("hello world", 75, 75);
context.fillText("hello world", 75, 75 + fontSize + fontSpace);
context.fillText("hello world", 75, 75 + (fontSize + fontSpace) * 2);

root.getChildren().add(canvas);

Scene scene = new Scene(root, 300, 250);

primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();

当我将鼠标悬停在它上面时,它会打印“hi”。当我单击它时,它会打印“焦点”。当我按下按键时,什么也没有发生。我有什么遗漏的吗?

最佳答案

你需要

canvas.setFocusTraversable(true);

因为 Canvas 没有 focusTraversable默认设置。

关于JavaFX Canvas 未拾取关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56362021/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com