尝试将变量传递给 javafx/scenebuilder 中的另一个控制器时出错



我正在制作一个简单的程序,其中我正在尝试将字符串从文本字段添加到另一个场景中的列表视图。问题是当我将字符串传递给将其添加到列表的方法时,我得到了一个 NullPointerException。

以下是主场景控制器的代码:

import java.io.IOException;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class MainPageController {
@FXML TextField txtfield;
public void addButton(ActionEvent event) {
String a=txtfield.getText();
FXMLLoader loader= new FXMLLoader();
loader.setLocation(getClass().getResource("/progra/view/ListView.fxml"));
ListController obj=loader.getController();
obj.addList(a);// <----NullPointerException
}
public void openList(ActionEvent event) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/program /view/ListView.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
Stage stage = new Stage();
stage.setScene(new Scene(root1));  
stage.show();
}
}

下面是列表场景控制器的代码:

import javafx.fxml.FXML;
import javafx.scene.control.ListView;
public class ListController{
@FXML
ListView<String> listofstrs;
public void addList(String a) {
listofstrs.getItems().add(a);
}
}

我需要做什么来修复它?如果我可以补充,是否可以在不打开包含它的舞台/场景中向另一个舞台/场景中的 ListView(或任何其他文本容器(添加变量,当您打开它时,您将看到您添加的内容?如果是这样,我需要添加什么?

因为您正在调用getController()方法,并且控制器未在 Java 源代码中设置,所以必须在 fxml 文件中定义控制器。你能发布 fxml 源代码吗?

在 fxml 中,根元素应将 fx:controller 属性设置为控制器的类路径,例如:

fx:controller="com.class.path.to.ListController

最新更新