Проблема с оплевленным событием в Javafx в Java 8
Вопрос
Я недавно обновил мою Java 7 на Java 8. У меня есть приложение, которое принимает в очаровании оплевленного события и проверяет, является ли KEY с ключом навигации и действовать соответственно. Ниже приведен MCVE
Мой код контроллера:
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 отображается без каких-либо проблем, но программа не распознает событие с ключом.Что может быть причиной.
Решение
Гридпана не имеет фокуса.Попробуйте вызвать генеракодицетагкод, когда показана этап.
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();
}
}
. Не связан с StackOverflow