NullPointerException:必须提供位置

时间:2019-05-27 09:29:14

标签: java javafx

我试图运行我的JavaFX程序,但是遇到了一些困难。我不断收到错误消息“ java.lang.NullPointerException:必须提供位置”。这是我的代码MainApp:

package de.stl.saar.projektarbeit;

import de.stl.saar.projektarbeit.constants.FXConstants;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;


public class MainApp extends Application {

    private Stage primaryStage;

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

    @Override
    public void start(Stage primaryStage) throws Exception {
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle(FXConstants.APPLICATION_NAME);
        initRootLayout();
    }

    private void initRootLayout() {
        try {
            Parent root = FXMLLoader.load(getClass().getClassLoader().getResource(FXConstants.PATH_ROOT_LAYOUT));
            primaryStage.setScene(new Scene(root, FXConstants.WIDTH_ROOT_LAYOUT, FXConstants.HEIGHT_ROOT_LAYOUT));
            primaryStage.setResizable(false);
            primaryStage.centerOnScreen();
            primaryStage.setTitle("Hauptfenster");
            primaryStage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这是我的FXConstants文件的副本:

package de.stl.saar.projektarbeit.constants;

public class FXConstants {
    public static final String APPLICATION_NAME = "Bachelorarbeit-Tool";
    private static final String FXML_PATH = "de/stl/saar/projektarbeit/view/javafx/fxml/";
    private static final String FXML_SUFFIX = ".fxml";
    public static final String PATH_ROOT_LAYOUT = FXML_PATH + "MainWindow" + FXML_SUFFIX;
    public static final int WIDTH_ROOT_LAYOUT = 800;
    public static final int HEIGHT_ROOT_LAYOUT = 500;
}

这是MainWindow.fxml文件的副本:

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="500.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.stl.saar.projektarbeit.view.javafx.controller.MainWindowController">
   <children>
      <MenuBar visible="false" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
        <menus>
          <Menu mnemonicParsing="false" text="File">
            <items>
              <MenuItem mnemonicParsing="false" text="Close" />
            </items>
          </Menu>
          <Menu mnemonicParsing="false" text="Edit">
            <items>
              <MenuItem mnemonicParsing="false" text="Delete" />
            </items>
          </Menu>
          <Menu mnemonicParsing="false" text="Help">
            <items>
              <MenuItem mnemonicParsing="false" text="About" />
            </items>
          </Menu>
        </menus>
      </MenuBar>
      <TableView fx:id="tv_bachelorData" layoutX="57.0" layoutY="50.0" prefHeight="200.0" AnchorPane.bottomAnchor="100.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="50.0">
        <columns>
          <TableColumn fx:id="tc_students" prefWidth="234.0" text="Student" />
          <TableColumn fx:id="tc_projects" minWidth="0.0" prefWidth="234.0" text="Projekt" />
            <TableColumn fx:id="tc_dates" prefWidth="232.0" text="Abgabe-Datum" />
        </columns>
      </TableView>
      <Button fx:id="bt_addStudent" layoutX="106.0" layoutY="425.0" mnemonicParsing="false" text="Student hinzufügen" />
      <Button fx:id="bt_addProject" layoutX="344.0" layoutY="425.0" mnemonicParsing="false" text="Projekt hinzufügen" />
   </children>
</AnchorPane>

控制器类确实存在,并且位于fxml文件中指定的包中。我所有的名字都是正确的,也是我认为应该的位置。我想念什么? 我正在使用Intellij IDEA。

编辑: 在de.stl.saar.projektarbeit.MainApp.initRootLayout(MainApp.java:32)

在de.stl.saar.projektarbeit.MainApp.start(MainApp.java:27)

0 个答案:

没有答案