gpt4 book ai didi

java - 尝试通过 "this"传递对象时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 06:13:45 26 4
gpt4 key购买 nike

我在 JavaFX 中完成本教程,并在标记为“<<--NullPointerException”的行上遇到了空指针异常。我只是不明白为什么会发生这种情况。有什么帮助吗?还给出了“this”所在的方法。我确定其余的代码几乎都是正确的。还给出了错误描述。

public class MainApp extends Application{

private Stage primaryStage;
private BorderPane rootLayout;
private ObservableList<Person> personData = FXCollections.observableArrayList();


public MainApp() {
personData.add(new Person("Stefan", "Meier"));
personData.add(new Person("Martin", "Mueller"));
}

@Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("AddressApp");
try {
FXMLLoader loader = new FXMLLoader(ClassLoader.getSystemResource("sample.fxml"));
rootLayout = (BorderPane) loader.load();
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException iox){
iox.printStackTrace();
}

showPersonOverview();
}

public Stage getPrimaryStage() {
return primaryStage;
}

public void showPersonOverview() {
try {
FXMLLoader loader = new FXMLLoader(ClassLoader.getSystemResource("fxcontroller.fxml"));
AnchorPane overviewPage = (AnchorPane) loader.load();
rootLayout.setCenter(overviewPage);

// Give the controller access to the main app
Controller controller = loader.getController();
controller.setMainApp(this); // <<--NullPointerException

} catch (IOException e) {
e.printStackTrace();
}
}

public ObservableList<Person> getPersonData(){
return personData;
}

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

类 Controller 中的 setMainApp() 方法。我确信此类中的其他代码是正确的,因为大多数代码只是设置和获取或创建按钮和标签。

@FXML
private TableView<Person> personTable;

private MainApp mainApp;

public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;

personTable.setItems(mainApp.getPersonData());
}

这是 fxcontroller.fxml 文件的第一部分,它提供了 AnchorPane

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

//import statements

<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
.....

错误信息:

Exception in Application start methodjava.lang.reflect.InvocationTargetException    ....Caused by: **java.lang.NullPointerException**    ....

抱歉,描述太长。我希望我知道如何缩短它。

最佳答案

无法加载您的 Controller 。这就是为什么你会得到 nullpointerException。

  1. 可能是 Controller 路径错误
  2. 或者您在 fxml 文件中指定 Controller 时犯了一些错误

关于java - 尝试通过 "this"传递对象时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29077648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com