JavaFX imageview выбрасывает ноль при добавлении в StackPane - PullRequest
0 голосов
/ 28 февраля 2019

У меня довольно сложная программа, которую мы должны изменить.

Здесь мы имеем MainWindow, который оборачивает компоненты приложения и отображает их как пользовательский интерфейс.

MainWindow.java:

// Independent Ui parts residing in this Ui container
private BrowserPanel browserPanel;
..
@FXML
private StackPane browserPlaceholder;
..
void fillInnerParts(){
  browserPanel = new BrowserPanel(logic.selectedPersonProperty());
  browserPlaceholder.getChildren().add(browserPanel.getRoot());
  ..
}

BrowserPanel.java:

 /**
 * The Browser Panel of the App.
 */
public class BrowserPanel extends UiPart<Region> {

   ..

    private static final String FXML = "BrowserPanel.fxml";

    @FXML
    private WebView browser;

    public BrowserPanel(ObservableValue<Person> selectedPerson) {
        super(FXML);
        ..  
    }
 ..

BrowserPanel.fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.web.WebView?>

<StackPane xmlns:fx="http://javafx.com/fxml/1">
  <WebView fx:id="browser"/>
</StackPane>

Я попытался изменить этот класс Browser , чтобы вместо него отображалось изображение.

MainWindow.java

// Independent Ui parts residing in this Ui container
private ImagePanel imagePanel;
..
@FXML
private StackPane ImagePanelPlaceholder;
..
void fillInnerParts(){
  imagePanel = new ImagePanel();
  imagePanelPlaceholder.getChildren().add(imagePanel.getRoot());
  ..
}

ImagePanel.java

public class ImagePanel extends UiPart<Region>{
    private static final String FXML = "ImagePanel.fxml";

    @FXML
    private ImageView imageView;

    public ImagePanel(){
        super(FXML);
        Image sample = new Image("/images/sample.png");
        imageView.setImage(sample);
    }
}

ImagePanel.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.image.ImageView?>


<ImageView fx:id="imageView" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" />

Однако я получаю сообщение об ошибке:

SEVERE: Fatal error during initializing nullnull
java.lang.NullPointerException
    at seedu.address.ui.MainWindow.fillInnerParts(MainWindow.java:120)

гдеfillInnerParts - это метод добавления всех компонентов в MainWindow, как показано выше.

Как мне изменить его так, чтобы я мог отображать изображение в своем приложении JavaFX?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...