У меня довольно сложная программа, которую мы должны изменить.
Здесь мы имеем 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?