首页 > 解决方案 > JavaFX:调用方法时出现 NullPointerException

问题描述

我遇到的问题是,当我loginerroroutput从另一个包中的另一个类调用 Java 控制器中的方法时。我不能fx:id="loginerrormessage"用 更改标签 ( ) setText。我得到一个NullPointerException错误。调用该方法,但找不到标签。loginerroroutput当我通过控制器的方法调用此方法 ( ) 时,它可以工作。

控制器代码

package gui;


import javafx.fxml.FXML;
import javafx.scene.control.Label;

import java.net.URL;
import java.util.ResourceBundle;

public class LoginController {

    private ResourceBundle resources;

    private URL location;

    @FXML
    public Label Loginerrormessage;

    //  Aufruf vom Eventbus für alle Fehler für das Login-> Fehlerausgabe als String wird angezeigt
    public void loginerroroutput(String string){   
        System.out.println(string);                  //Console output string
        Loginerrormessage.setText(string);           // Console output null

    }
    public void initialize() {
    }
}

FXML 代码

我很确定这是initialize()方法,因为我认为该方法负责后处理过程。

感谢您的提示和建议。

标签: javajavafx

解决方案


您应该在任何地方保存一个 LoginController 对象以准确调用该对象。

例如:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getClassLoader().getResource("loginController.fxml"));
LoginController loginController = loader.getController();
AnyWhereStorage.setLoginController(loginController);  

然后在任何地方:

AnyWhereStorage.getLoginController.loginerroroutput("Error");

推荐阅读