Problème avec Keypressed événement en JavaFx dans Java 8
Question
J'ai récemment mis à jour mon java 7 de java 8.J'ai une application qui prend en keypressed de l'événement et de vérifier si le keypressed est un touche de navigation et d'agir en conséquence.Ci-dessous est une mcve
Mon contrôleur de code:
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");
}
}
Mon fichier 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" />
Le problème est que mon code complètement fonctionne très bien si je l'exécute à l'aide de Java 7.Quand j'essaie de le lancer à l'aide de java 8, mon INTERFACE utilisateur s'affiche sans aucun problème, mais le programme ne reconnaît pas l'keypressed événement.Quelle pourrait être la raison.
La solution
Le GridPane n'a pas l'accent.Essayez d'appeler requestFocus
lorsque la scène est indiqué.
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();
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow