Cześć,
Siedzę nad tym tematem już dobrych kilka dni i nie potrafię zrozumieć tego mechanizmu. Otwarcie pierwszego okna w aplikacji działa bez zarzutu, ale otwarcie kolejnego zwraca błąd NullPointerException.
Plik main
package Main;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("/main.fxml"));
StackPane stackPane = loader.load();
Scene scena = new Scene(stackPane);
primaryStage.setScene(scena);
primaryStage.show();
}}
Main Controller
package Main;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.layout.StackPane;
public class mainController implements Initializable {
@FXML private StackPane stackPane;
@Override
public void initialize(URL location, ResourceBundle resources) {
loader("/first.fxml");
}
public void loader(String fxml){
FXMLLoader loader = new FXMLLoader(this.getClass().getResource(fxml));
StackPane stackpane = null;
try {
stackpane = loader.load();
} catch (IOException e) {
e.printStackTrace();
}
setScreen(stackpane);
}
public void setScreen(StackPane stackpane) {
stackPane.getChildren().clear();
stackPane.getChildren().add(stackpane);
}}
pierwsze okno
package firstWindow;
import java.net.URL;
import java.util.ResourceBundle;
import Main.mainController;
import javafx.fxml.Initializable;
public class firstWindowController implements Initializable{
private mainController stackPane;
public void setStackPane(mainController stackPane) {
this.stackPane = stackPane;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
stackPane.loader("/secund.fxml");
}}
fxmly są totalnie puste, mają tylko StackPane z nadanym fx i podpięty kontroler. Pierwsze okno ładuje się bez problemu, ale drugie już zwraca nulla. Mógłby mi ktoś coś doradzić ?