运行 Java FXML 程序中的错误

Error in running Java FXML program

我在尝试 运行 我的 java fxml 应用程序时在 netbeans 上遇到错误。

这是我收到的错误:

Caused by: java.lang.NullPointerException at apnc7dsimulator.UIController.handleStart(UIController.java:4‌​2) at apnc7dsimulator.UIController.handleNew(UIController.java:37) at apnc7dsimulator.UIController.initialize(UIController.java:31‌​) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) ... 17 more

看来错误出自我的控制器。这是我的代码:

public class UIController implements Initializable {

@FXML
private TextArea screen;

@FXML
private TextField commandLine; 

private Login login;

@Override
public void initialize(URL location, ResourceBundle resources) {
    handleNew();
}

public void handleNew(){
    screen.clear();
    commandLine.clear();
    handleStart();

}

public void handleStart(){
    login.loginSys(screen);

}}

控制器引用的代码是这样的:

public class Login implements PrintToScreen{

@Override
public void print(String text, TextArea screen) {
    screen.appendText(text);
}

@Override
public String read(TextArea screen) {
    Scanner scanner = new Scanner(System.in);
    String readString = scanner.nextLine();
    while(readString != null){

        print(readString,screen);

        if(scanner.hasNextLine()){
            readString = scanner.nextLine();
        }
        else{
            readString = null;
        }
    } 
    return readString;   
}

public void loginSys (TextArea screen)
{
    String user = "...";
    String pass = "...";

    print("Please Enter Username:",screen); 
    user = read(screen);

    print("Please Enter Password:",screen);
    pass = read(screen);

    print("Check Credentials... Please Wait.",screen);
}}

我确定这是我犯的一个简单错误,或者我没有正确遵守某种约定,但这让我困惑了一段时间。 任何帮助都会很棒。

假设您已经发布了所有代码,login 成员变量似乎从未被初始化。默认情况下,它被初始化为 null。结果是当这行代码运行时:

login.loginSys(screen);

由于 login 为空,代码抛出 NullPointerException.

在代码的某处,在调用 handleStart() 之前,可能在 UIController 构造函数中,您需要初始化 login,例如:

login = new Login();