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.

Était-ce utile?

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
scroll top