gpt4 book ai didi

java - Java 8 中 JavaFx 中的按键事件问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:23:03 25 4
gpt4 key购买 nike

我最近将我的 java 7 更新到 java 8。我有一个应用程序接收按键事件并检查按键是否是导航键并采取相应行动。下面是一个mcve

我的 Controller 代码:

package sample;

import javafx.fxml.FXML;
import javafx.scene.input.KeyEvent;

public class Controller {

@FXML
private void keyPressed(KeyEvent evt) {
System.out.println("Key Pressed");
}


}

我的 FXML 文件:

<?xml version="1.0" encoding="UTF-8"?>

//I removed all the imports in this post... My original fxml has all the imports...

<GridPane id="gridPaneId" alignment="CENTER" focusTraversable="true"
gridLinesVisible="true" hgap="10.0" onKeyPressed="#keyPressed" prefHeight="400.0"
prefWidth="300.0" vgap="10.0" xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2" fx:controller="sample.Controller" />

问题是,如果我使用 Java 7 运行我的代码,它完全可以正常工作。当我尝试使用 Java 8 运行它时,我的 UI 显示没有任何问题,但程序无法识别按键事件。可能是什么原因。

最佳答案

GridPane 没有焦点。尝试在显示舞台时调用 requestFocus

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class SampleApp extends Application {
public static void main(String[] args) {
launch(SampleApp.class);
}

@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(FXMLLoader.load(getClass().getResource("/sample/Sample.fxml")));
primaryStage.setScene(scene );
primaryStage.show();
scene.getRoot().requestFocus();
}
}

关于java - Java 8 中 JavaFx 中的按键事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025995/

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