Я хочу сделать переключение фото-программы, используя imageView и keyEvent, но когда я пытаюсь использовать keyEvent, оно не работает, я пытался добавить scene.getRoot (). RequestFocus (); но не помогло, поэтому мой вопрос: почему это не работает, как я мог активировать его?
MenuScreenController.java
@FXML
public void getNewImageHandler(KeyEvent event) {
System.out.println(singleFile.getName());
imgFieldView.setOnKeyPressed(e -> {
if (e.getCode() == KeyCode.N) {
photoSwipCounter++;
System.out.println("P clicked");
} else if (e.getCode() == KeyCode.P) {
photoSwipCounter--;
}
});
// if (event.getCode().equals(KeyCode.N)) {
// photoSwipCounter++;
// }
// if (event.getCode().equals(KeyCode.P)) {
// photoSwipCounter--;
// }
if (photoSwipCounter < 0) {
singleFile = selectedImgsList.get(selectedImgsList.size() - photoSwipCounter);
} else {
singleFile = selectedImgsList.get(photoSwipCounter);
}
image = new Image(singleFile.toURI().toString(),
900, 400,
true, true, true);
imgFieldView.setImage(image);
}
Как вы можете видеть, я пробовал много методов, потоковых или классических, но это не изменило.
MenuScreen.fxml
<Pane fx:id="menuPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="screensaverfxml.Controllers.MenuScreenController">
<children>
<ImageView fx:id="imgFieldView" fitHeight="400.0" fitWidth="900.0" layoutX="66.0" layoutY="62.0" onKeyPressed="#getNewImageHandler" onMouseClicked="#imgDoubleClick" pickOnBounds="true" preserveRatio="true" />
</children>
</Pane>
ScreenSaverFXML.java
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("/screensaverfxml/fxmlConfig/MainScreen.fxml"));
Pane mainPane = loader.load();
Scene scene = new Scene(mainPane, 1000, 700);
primaryStage.setScene(scene);
primaryStage.setTitle("Screen Saver");
primaryStage.show();
scene.getRoot().requestFocus();
}
И, конечно, у меня есть способ загрузить первую фотографию в imageView, и она работает, загружая ее из папки в список, но переключаясь на следующую нет