ImageView в файле FXML не подключается к классу контроллера - PullRequest
0 голосов
/ 26 декабря 2018

Я проверил свой импорт и проверил, что 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;
            }     
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...