我正在制作一个简单的程序,其中我试图将一个TextField中的字符串添加到另一个场景中的ListView中。问题是当我将字符串传递给将其添加到列表的方法时,我得到了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(或任何其他文本容器)而无需打开包含它的阶段/场景,当您打开它时,您会看到添加的内容吗?如果是这样,我需要添加什么?
答案 0 :(得分:0)
由于您正在调用getController()
方法,并且未在Java源代码中设置控制器,因此必须在fxml文件中定义控制器。您可以发布fxml源代码吗?
在您的fxml中,您的根元素应将fx:controller属性设置为控制器的类路径,例如:
fx:controller="com.class.path.to.ListController