Одна из проблем в вашем коде заключается в том, что вы используете (1) код для создания своих элементов, а затем (2) используете fxml для другой панели.Если вы используете код, просто используйте код.Если вы используете fxml, просто используйте fxml.
Ваша начальная панель выполнена в коде.Один из вариантов: не делать FXML.Создайте новый класс, расширяющий любую панель, и делайте все в коде.
Перезагрузка уже загруженного файла FXML всегда выдает ошибку.
Если вы хотите избежать ошибки в текущем коде, выдолжны убедиться, что FXML уже загружен.Не создавайте его экземпляры в вашем методе setOnAction (кнопка).
public class Main extends Application {
static Parent root1;
{
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/A.fxml"));
root1 = (Parent) fxmlLoader.load();
} catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void start(Stage primaryStage) throws Exception {
Pane pane = new HBox(10);
pane.setPadding(new Insets(5, 5, 5, 5));
Image image = new Image("FXML/Capture.PNG");
Stage stage = new Stage();
stage.setScene(new Scene(root1,500,500));
Button button = new Button("Winner");
button.setMinWidth(200);
button.setOnAction(e-> {
stage.show();
});
primaryStage.setTitle("pokemon stats");
Scene value = new Scene(pane, 1000, 600);
primaryStage.setWidth(1000);
primaryStage.setScene(value);
ImageView imageView2 = new ImageView(image);
imageView2.setPreserveRatio(true);
pane.getChildren().add(imageView2);
pane.getChildren().add(button);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Я не проверял код выше.Но я надеюсь, что вы поняли идею.