JavaFX setText()NullPointerException,即使我已经设置了控制器和fxml标记
切换到新场景时,我正在尝试将数据填充到新场景中。用户登录(这是有效的,因为如果我向他发送字符串(),我就得到了所需的一切)。例如,当我在JFXTextField上调用setText()时,它不起作用 这是我的控制器。切换到此场景时调用UpdatehomeJavaFX setText()NullPointerException,即使我已经设置了控制器和fxml标记,java,javafx,null,fxml,Java,Javafx,Null,Fxml,切换到新场景时,我正在尝试将数据填充到新场景中。用户登录(这是有效的,因为如果我向他发送字符串(),我就得到了所需的一切)。例如,当我在JFXTextField上调用setText()时,它不起作用 这是我的控制器。切换到此场景时调用Updatehome public class DashboardController { @FXML JFXTextField txtGastDashboardSuchfeld; @FXML Label lblGastDashboardNachn
public class DashboardController {
@FXML JFXTextField txtGastDashboardSuchfeld;
@FXML Label lblGastDashboardNachnameVorname;
@FXML JFXTextField txtGastHomeVorname;
@FXML JFXTextField txtGastHomeNachname;
@FXML JFXTextField txtGastHomeSteuernummer;
@FXML JFXTextField txtGastHomeAusweisnummer;
@FXML JFXTextField txtGastHomeEmail;
@FXML JFXPasswordField pwfGastHomePasswort;
public void updateHome() {
if(Main.user == null) {
Controller.errorMessage("Fataler Fehler", "User konnte nicht aufgelöst werden!");
return;
}
System.out.println(Main.user.toString());
lblGastDashboardNachnameVorname.setText(Main.user.getVollername());
txtGastHomeVorname.setText(Main.user.getVorname());
txtGastHomeNachname.setText(Main.user.getNachname());
txtGastHomeSteuernummer.setText(Main.user.getSteuernummer());
txtGastHomeAusweisnummer.setText(Main.user.getAusweisnummer());
txtGastHomeEmail.setText(Main.user.getEmailAdresse());
pwfGastHomePasswort.setText(Main.user.getPasswort().toString());
}
}
在我的主要课程中,我有这个(正在加载场景)
哪一行引发空指针异常?您可以添加fxml文件吗?鉴于您发布的代码段,您可能还需要检查正在加载的fxml文件是否是您认为的文件。。。您确定没有将控制器设置为错误FXML文件的
仪表板控制器吗?@James\u D linetxtGastHomeVorname.setText(Main.user.getVorname())updateHome()
中的code>正在引发异常@HamishD这是我正在加载的FXML文件。仪表板控制器仅在我切换到仪表板时设置。奇怪的是这一行lblGastDashboardNachnameVorname.setText(Main.user.getVollername())代码>可以正常工作。其他人都没有。我不想发布太多的代码来保持它的整洁,但是如果您需要它,请告诉我。好的,在仔细查看我的fxml文件后,我找到了空对象的原因。我使用场景生成器创建了这些场景,并在fx:id
下设置了正确的名称。然而,当我检查文件时,它们却无处可寻。如果我手动添加这些标记,一切都会开始工作。所以我的问题是为什么scenebuilder不保存fx:id
public static Controller controller;
public static DashboardController dashboardController;
public static Person user = null;
public static Stage window;
public static TreeMap<String, Scene> scenes = new TreeMap<>();
public static ArrayList<Scene> history = new ArrayList<>();
@Override
public void start(Stage primaryStage) {
window = primaryStage;
controller = new Controller();
dashboardController = new DashboardController();
loadScenes();
}
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath));
try {
if(sceneName.contains("dashboard")) {
loader.setController(dashboardController);
} else
loader.setController(controller);
Parent parent = (Parent)loader.load();
scenes.put(sceneName, new Scene(parent));