Я проверил свой импорт и проверил, что fx: id моего ImageView и имя переменной, которое я дал в классе контроллера, совпадают, но все равно не будет работать.В других подпрограммах этого класса работают другие вещи, такие как кнопки и метки, поэтому я не знаю, что не так с этим ImageView.
Это мой документ FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/10.0.1" fx:controller="application.Controller">
<children>
<ImageView fx:id="body" fitHeight="150.0" fitWidth="200.0" layoutX="243.0" layoutY="100.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../img/BB8Body.png" />
</image>
</ImageView>
</children>
</AnchorPane>
Ивот та часть контроллера, которая не будет работать:
package application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
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.text.Text;
import javafx.stage.Stage;
public class Controller {
@FXML
public ImageView body = new ImageView();
public void level1(ActionEvent event) {
//changing scenes to level 1
Scene scene=null;
try {
Parent root = FXMLLoader.load(getClass().getResource("Level1.fxml"));
scene = new Scene(root);
Stage primaryStage=(Stage)((((Node) event.getSource()).getScene().getWindow()));
primaryStage.setScene(scene);
primaryStage.show();
initData();
//lev1=true;
} catch(Exception e) {
e.printStackTrace();
}
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
switch (event.getCode()) {
case UP:
body.setLayoutY(body.getLayoutY() - 5);
System.out.println("UP");
break;
case RIGHT:
body.setLayoutX(body.getLayoutX() + 5);
System.out.println("RIGHT");
break;
case DOWN:
body.setLayoutY(body.getLayoutY() + 5);
System.out.println("DOWN");
break;
case LEFT:
body.setLayoutX(body.getLayoutX() - 5);
System.out.println("LEFT");
break;
default:
break;
}
}
});
}