【发布时间】:2018-10-17 15:01:53
【问题描述】:
我正在制作一个简单的程序,其中我试图将一个字符串从 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(或任何其他文本容器)而不打开它所在的舞台/场景,当你打开它时你会看到你添加的东西?如果是这样,我需要添加什么?
【问题讨论】:
-
哪一行抛出
NullPointerException?你确定你的FXML定义了一个名为listofstrs的ListView吗?附带说明一下,请学习 Java 命名约定并遵守它们(对象引用应为驼峰式:listOfStrs)。它可以帮助我们帮助您:) -
obj.addList(a);
-
那么显然你的
obj对象是null。您是否使用ListView.fxml文件中的fx:controller标记定义了控制器? -
不...你是怎么做到的,你是什么意思?编辑:是的,我是通过 SceneBuilder 完成的
-
我不知道这是否是问题所在,但每次我使用这种方法时,我都会在
loader.getController();之前的某个地方调用loader.load();。
标签: java eclipse javafx scenebuilder