あなたの質問は少し非特異的であるので、私はあなたがイメージビューが置かれているペインに追加されたイベントハンドラをしたい、とあなたはコントローラにそれを設定することを想定しました。もちろん
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);
}
});
}
}
が、これはペインの内側にImageViewのを保持しているFXMLを必要としますが、それは簡単にあなたのニーズに合わせて調整することができます。これは私のソリューションです。 回転を実行する関数は思ったように機能しますが、可能な限りequalsを使って比較します。シーン全体がロードされ、シーンが設定されたら、ペインにフォーカスを要求させるために、ペインのscenePropertyにリスナーを追加しました。つまり、キーを押すと実際にペインに登録されているKeyEventHandlerがトリガーされます。 EventHandlerの登録はまっすぐです。希望は助ける:)