Votre question est un peu non spécifique, donc je suppose que vous voulez un gestionnaire d'événements qui est ajouté à la vitre dans laquelle la vue de l'image repose, et que vous voulez le mettre dans le contrôleur. Ceci est ma solution:
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;
public class FXMLDocumentController implements Initializable {
@FXML
Pane pane;
@FXML
ImageView imgView;
public void arrowRotation(KeyEvent event){
if(event.getCode().equals(KeyCode.R))
imgView.setRotate(90);
}
@Override
public void initialize(URL url, ResourceBundle rb) {
Image img = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Javafx-layout-classes.svg/1000px-Javafx-layout-classes.svg.png");
imgView.setImage(img);
pane.sceneProperty().addListener(new ChangeListener<Scene>() {
@Override
public void changed(ObservableValue<? extends Scene> observable, Scene oldValue, Scene newValue) {
if(newValue != null){
pane.requestFocus();
}
}
});
pane.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
arrowRotation(event);
}
});
}
}
Bien sûr, cela a besoin d'un FXML qui est titulaire d'un ImageView à l'intérieur d'un volet, mais qui peut facilement être ajustée pour répondre à vos besoins. La fonction qui effectue la rotation fonctionne à peu près comme vous le pensiez, mais je comparerais en utilisant égal si possible. J'ai ajouté un écouteur à la sceneProperty du volet pour laisser le volet demander le focus une fois le tout chargé et la scène réglée. Cela signifie qu'appuyer sur une touche déclenchera KeyEventHandlers qui sont enregistrés dans le volet. L'enregistrement de EventHandler est à nouveau direct. J'espère que ça aide :)