-1

При запуске приложения получаю ошибку

Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.control.Button.setOnAction(javafx.event.EventHandler)" because "this.ToStajerTwo" is null
    at sample.Controller.initialize(Controller.java:84)
    84 строка - ToStajerTwo.setOnAction(event -> {

Мейн:

package sample;

import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Mod Helper");
    primaryStage.setScene(new Scene(root, 800, 500));
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
}

}

Контроллер:

package sample;

import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage;

public class Controller {

@FXML
private ResourceBundle resources;

@FXML
private URL location;

@FXML
private Button Stajer;

@FXML
private Button Helper;

@FXML
private Button Moderator;

@FXML
private Button SeniorModerator;

@FXML
private Button ToStajerTwo;

@FXML
private Button BackStajer;

@FXML
public void initialize() {
    Stajer.setOnAction(event -> {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Stajer.fxml"));
            Stage window = (Stage) Stajer.getScene().getWindow();
            window.setScene(new Scene(root, 800, 500));
        } catch (IOException e) {
            e.printStackTrace();
        }

    });
    Helper.setOnAction(event -> {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Helper.fxml"));
            Stage window = (Stage) Stajer.getScene().getWindow();
            window.setScene(new Scene(root, 800, 500));
        } catch (IOException e) {
            e.printStackTrace();
        }

    });

    Moderator.setOnAction(event -> {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Moderator.fxml"));
            Stage window = (Stage) Stajer.getScene().getWindow();
            window.setScene(new Scene(root, 800, 500));
        } catch (IOException e) {
            e.printStackTrace();
        }

    });

    SeniorModerator.setOnAction(event -> {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("SeniorModerator.fxml"));
            Stage window = (Stage) Stajer.getScene().getWindow();
            window.setScene(new Scene(root, 800, 500));
        } catch (IOException e) {
            e.printStackTrace();
        }

    });

    ToStajerTwo.setOnAction(event -> {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("StajerTwo"));
            Stage window = (Stage) Stajer.getScene().getWindow();
            window.setScene(new Scene(root, 800, 500));
        } catch (IOException e) {
            e.printStackTrace();
        }

    });

    BackStajer.setOnAction(event -> {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Stajer"));
            Stage window = (Stage) Stajer.getScene().getWindow();
            window.setScene(new Scene(root, 800, 500));
        } catch (IOException e) {
            e.printStackTrace();
        }

    });


}

}

Stajer.fxml:

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

<?import javafx.scene.Cursor?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.ButtonBar?> <?import javafx.scene.effect.Glow?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.text.Font?> <?import javafx.scene.text.Text?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="800.0" style="-fx-background-color: #f0f8ff;" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <AnchorPane layoutY="-4.0" prefHeight="84.0" prefWidth="800.0" style="-fx-background-color: #808080;" AnchorPane.bottomAnchor="420.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <children> <Button fx:id="Stajer" layoutX="14.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #ffff00;" text="..."> <font> <Font name="System Bold" size="12.0" /> </font> <effect> <Glow level="0.25" /> </effect> <cursor> <Cursor fx:constant="HAND" /> </cursor> </Button> <Button fx:id="Helper" layoutX="155.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #008000;" text="Помощник"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="Moderator" layoutX="534.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #8b00ff;" text="Модератор"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="SeniorModerator" layoutX="679.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #42aaff;" text="Старший модератор"> <font> <Font name="System Bold" size="9.0" /> </font> </Button> </children> </AnchorPane> <AnchorPane layoutX="-1.0" layoutY="79.0" prefHeight="422.0" prefWidth="800.0" style="-fx-background-color: #adff2f;"> <children> <AnchorPane layoutX="300.0" layoutY="14.0" prefHeight="34.0" prefWidth="200.0"> <children> <Text layoutX="12.0" layoutY="25.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Доступные команды:" wrappingWidth="176.13671875"> <font> <Font name="System Bold" size="16.0" /> </font> </Text> </children> </AnchorPane> <Text layoutX="14.0" layoutY="71.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/god - Режим бога, бессмертие" wrappingWidth="344.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="14.0" layoutY="102.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/helpop (/l) - Модераторский чат" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="14.0" layoutY="133.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/invsee [ник] - Открывает инвентарь игрока" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="14.0" layoutY="195.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/seen [ник] - Отображает когда игрок был в сети" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="17.0" layoutY="259.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/whois [ник] - Отображает подробную информацию о игроке в онлайне" wrappingWidth="358.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="14.0" layoutY="350.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/checkip [ник] - Отображает IP игрока, количество аккаунтов на айпи, расположение на карте" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="379.0" layoutY="71.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/checkban [ник] - Отображает, забанен ли игрок, причина, кто забанил, количество варнов" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="379.0" layoutY="164.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/ipreport - Отображает IP всех игроков на сервере, их аккаунты, забаненные аккаунты помечает красным цветом" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="379.0" layoutY="288.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/history [ник] - Показывает выданные нарушения игроку" wrappingWidth="344.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Button fx:id="ToStajerTwo" layoutX="681.0" layoutY="330.0" mnemonicParsing="false" prefHeight="84.0" prefWidth="84.0" style="-fx-background-color: #ff0000;" text="→" textFill="WHITE"> <font> <Font size="36.0" /> </font> </Button> <ButtonBar layoutX="389.0" layoutY="352.0" prefHeight="40.0" prefWidth="200.0" /> </children> </AnchorPane> </children> </AnchorPane>

StajerTwo.fxml:

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

<?import javafx.scene.Cursor?> <?import javafx.scene.control.Button?> <?import javafx.scene.effect.Glow?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.text.Font?> <?import javafx.scene.text.Text?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="800.0" style="-fx-background-color: #f0f8ff;" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <AnchorPane layoutY="-4.0" prefHeight="84.0" prefWidth="800.0" style="-fx-background-color: #808080;" AnchorPane.bottomAnchor="420.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <children> <Button fx:id="Stajer" layoutX="14.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #ffff00;" text="..."> <font> <Font name="System Bold" size="12.0" /> </font> <effect> <Glow level="0.25" /> </effect> <cursor> <Cursor fx:constant="HAND" /> </cursor> </Button> <Button fx:id="Helper" layoutX="155.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #008000;" text="Помощник"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="Moderator" layoutX="534.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #8b00ff;" text="Модератор"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="SeniorModerator" layoutX="679.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #42aaff;" text="Старший модератор"> <font> <Font name="System Bold" size="9.0" /> </font> </Button> </children> </AnchorPane> <AnchorPane layoutX="-1.0" layoutY="79.0" prefHeight="422.0" prefWidth="800.0" style="-fx-background-color: #adff2f;"> <children> <AnchorPane layoutX="300.0" layoutY="14.0" prefHeight="34.0" prefWidth="200.0"> <children> <Text layoutX="12.0" layoutY="25.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Доступные команды:" wrappingWidth="176.13671875"> <font> <Font name="System Bold" size="16.0" /> </font> </Text> </children> </AnchorPane> <Text layoutX="14.0" layoutY="71.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/dupeip [ник] - Отображает информацию о игроке или IP адресе. Количество аккаунтов, состояние бана" wrappingWidth="344.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="16.0" layoutY="195.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/co i - Включает/выключает режим проверки блоков. Кто ставил, кто ломал, открывал" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="14.0" layoutY="288.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/tempmute [ник] [время] [пункт правила] - Запрещает игроку пользоваться чатом на некоторое время." wrappingWidth="358.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="372.0" layoutY="71.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/mute [ник] [пункт правила] - Навсегда запрещает игроку пользовться чатом." wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Text layoutX="372.0" layoutY="188.0" strokeType="OUTSIDE" strokeWidth="0.0" text="/warn [ник] [-s] [пункт правила] [разъяснения причины] - Выдаёт предупреждение игроку" wrappingWidth="365.13671875"> <font> <Font name="System Bold" size="21.0" /> </font> </Text> <Button fx:id="BackStajer" layoutX="653.0" layoutY="293.0" mnemonicParsing="false" prefHeight="84.0" prefWidth="84.0" style="-fx-background-color: #ff0000;" text="←" textFill="WHITE"> <font> <Font size="36.0" /> </font> </Button> </children> </AnchorPane> </children> </AnchorPane>

SeniorModerator.fxml:

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

<?import javafx.scene.Cursor?> <?import javafx.scene.control.Button?> <?import javafx.scene.effect.Glow?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.text.Font?> <?import javafx.scene.text.Text?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="800.0" style="-fx-background-color: #f0f8ff;" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <AnchorPane prefHeight="80.0" prefWidth="800.0" style="-fx-background-color: #808080;" AnchorPane.bottomAnchor="420.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <children> <Button fx:id="Stajer" layoutX="14.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #ffff00;" text="Стажёр"> <font> <Font name="System Bold" size="12.0" /> </font> <effect> <Glow level="0.25" /> </effect> <cursor> <Cursor fx:constant="HAND" /> </cursor> </Button> <Button fx:id="Helper" layoutX="155.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #008000;" text="Помощник"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="Moderator" layoutX="534.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #8b00ff;" text="Модератор"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="SeniorModerator" layoutX="679.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #42aaff;" text="..."> <font> <Font name="System Bold" size="9.0" /> </font> </Button> </children> </AnchorPane> <AnchorPane layoutX="-1.0" layoutY="79.0" prefHeight="422.0" prefWidth="800.0" style="-fx-background-color: #42aaff;"> <children> <AnchorPane layoutX="300.0" layoutY="14.0" prefHeight="34.0" prefWidth="200.0"> <children> <Text layoutX="12.0" layoutY="25.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Доступные команды:" wrappingWidth="176.13671875"> <font> <Font name="System Bold" size="16.0" /> </font> </Text> </children> </AnchorPane> <Text layoutX="14.0" layoutY="71.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="139.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="103.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="177.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="207.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> </children> </AnchorPane> </children> </AnchorPane>

Helper.fxml:

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

<?import javafx.scene.Cursor?> <?import javafx.scene.control.Button?> <?import javafx.scene.effect.Glow?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.text.Font?> <?import javafx.scene.text.Text?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="800.0" style="-fx-background-color: #f0f8ff;" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <AnchorPane prefHeight="80.0" prefWidth="800.0" style="-fx-background-color: #808080;" AnchorPane.bottomAnchor="420.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <children> <Button fx:id="Stajer" layoutX="14.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #ffff00;" text="Стажёр"> <font> <Font name="System Bold" size="12.0" /> </font> <effect> <Glow level="0.25" /> </effect> <cursor> <Cursor fx:constant="HAND" /> </cursor> </Button> <Button fx:id="Helper" layoutX="155.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #008000;" text="..."> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="Moderator" layoutX="534.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #8b00ff;" text="Модератор"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="SeniorModerator" layoutX="679.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #42aaff;" text="Старший модератор"> <font> <Font name="System Bold" size="9.0" /> </font> </Button> </children> </AnchorPane> <AnchorPane layoutX="-1.0" layoutY="79.0" prefHeight="422.0" prefWidth="800.0" style="-fx-background-color: #008000;"> <children> <AnchorPane layoutX="300.0" layoutY="14.0" prefHeight="34.0" prefWidth="200.0"> <children> <Text layoutX="12.0" layoutY="25.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Доступные команды:" wrappingWidth="176.13671875"> <font> <Font name="System Bold" size="16.0" /> </font> </Text> </children> </AnchorPane> <Text layoutX="14.0" layoutY="71.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="139.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="103.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="177.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> <Text layoutX="14.0" layoutY="207.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" wrappingWidth="289.13671875" /> </children> </AnchorPane> </children> </AnchorPane>

sample.fxml:

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

<?import javafx.scene.Cursor?> <?import javafx.scene.control.Button?> <?import javafx.scene.effect.Glow?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.text.Font?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="800.0" style="-fx-background-color: #f0f8ff;" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <AnchorPane prefHeight="80.0" prefWidth="800.0" style="-fx-background-color: c0c0c0;" AnchorPane.bottomAnchor="420.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <children> <Button fx:id="Stajer" layoutX="14.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #ffff00;" text="Стажёр"> <font> <Font name="System Bold" size="12.0" /> </font> <effect> <Glow level="0.25" /> </effect> <cursor> <Cursor fx:constant="HAND" /> </cursor> </Button> <Button fx:id="Helper" layoutX="155.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #008000;" text="Помощник"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="Moderator" layoutX="534.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #8b00ff;" text="Модератор"> <font> <Font name="System Bold" size="12.0" /> </font> </Button> <Button fx:id="SeniorModerator" layoutX="679.0" layoutY="33.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="107.0" style="-fx-background-color: #42aaff;" text="Старший модератор"> <font> <Font name="System Bold" size="9.0" /> </font> </Button> </children> </AnchorPane> </children> </AnchorPane>

MajinSoil
  • 7
  • 5

1 Answers1

0

Поля в контроллере, помеченные аннотацией @FXML, заполняются на основании данных из fxml файла, а именно из тегов с fx:id совпадающими с именами полей контроллера с данной аннотацией. Т.е., если в контроллере есть @FXML private Button someButton;, то в fxml файле должен быть соответствующий тег <Button fx:id="someButton" ...>, тогда поле someButton в контроллере будет заполнено.

В приведенном fxml файле нет тегов виджета с fx:id="BackStajer", поэтому поле BackStajer в контроллере не инициализируется, отсюда и NullPointerException при попытке вызвать метод от неинициализированного поля.

Если блок BackStajer.setOnAction(event -> { ... }); из контроллера убрать или в sample.fxml добавить кнопку с fx:id="BackStajer", то все начинает работать.


Контроллер инициализируется в момент запуска строки Parent root = FXMLLoader.load(getClass().getResource("Имя_файла.fxml")); в методе start класса Main, и инициализируется он с первоначальным fxml (который указан в этой строке). На момент вызова метода public void initialize() контроллера будут инициализированы толь те поля, которые есть в этом fxml. Если какого-то поля из контроллера в этом fxml нет, то оно и не будет инициализировано, и при попытке вызова метода от этого поля будет NullPointerException.

insolor
  • 49,104
  • Я копировал скелет в scene builder, там resources и location сами помечены как FXML... – MajinSoil Jul 08 '21 at 08:36
  • @Doctorspiele не важно, это скорее дополнение к вопросу. По поводу остального разобрались? – insolor Jul 08 '21 at 08:42
  • Я изменил названия на ToStajerTwo, в вопросе добавлял fxml с этим айдишником, а в контроллере осталось всё ещё NextStajer, так что оно не решает ошибки, BackStajer находится в другом fxml, с ним ошибок нет... – MajinSoil Jul 08 '21 at 10:16
  • Ничего не понял. У вас два fxml с одним контроллером? "BackStajer находится в другом fxml, с ним ошибок нет..." - ошибок нет потому что падает до того как дойдет до строки BackStajer.setOnAction(..... Если убрать блок с ToStajerTwo.setOnAction(event -> {, то упадет на BackStajer. – insolor Jul 08 '21 at 10:17
  • Скажу так, у меня 6 fxml с одним контроллером, всё прекрасно работает кроме этой кнопки... – MajinSoil Jul 08 '21 at 10:21
  • @Doctorspiele я скопировал код из вашего вопроса, падает на BackStajer.setOnAction(event -> {, и как раз BackStajer нет в fxml. Если блок с BackStajer убрать или в fxml добавить кнопку с fx:id="BackStajer", то внезапно все начинает работать. Причина падения описана в ответе. – insolor Jul 08 '21 at 10:32
  • Давай вместо fx:id="BackStajer" использовать fx:id="ToStajerTwo" , т.к я изменил это в вопросе. fx:id="ToStajerTwo" у меня используется в Stajer.fxml, так же как и BackStajer в StajerTwo.fxml... – MajinSoil Jul 08 '21 at 10:36
  • Приведите код в вопросе в состояние, в котором он у вас сейчас, чтобы я мог просто его скопировать, и воспроизвести проблему у себя. – insolor Jul 08 '21 at 10:39
  • Контроллер у вас инициализируется в момент запуска метода start класса Main, и инициализируется он с первоначальным fxml (который указан в строке Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));). Поэтому инициализруются только те поля, которые есть в этом fxml. – insolor Jul 08 '21 at 10:41
  • Добавил все fxml которые присутствуют... – MajinSoil Jul 08 '21 at 10:45
  • См. последний абзац в ответе. – insolor Jul 08 '21 at 10:47
  • О, кажется дошли до нужного ответа, а что необходимо сделать для решения? – MajinSoil Jul 08 '21 at 10:49
  • Можно добавить кнопку в первоначальный fxml, просто сделать ее скрытой – insolor Jul 08 '21 at 10:50
  • Я глупенький, это как?) – MajinSoil Jul 08 '21 at 10:55
  • <Button fx:id="ToStajerTwo" visible="false" ...>, либо в initialize прописать ToStajerTwo.setVisible(false); – insolor Jul 08 '21 at 10:56
  • at sample.Controller.initialize(Controller.java:42)``` – MajinSoil Jul 08 '21 at 11:05
  • В любом случае нужно в fxml кнопку добавить, после этого в контроллере пробовать делать setVisible – insolor Jul 08 '21 at 11:30