运行 Java FXML 程序中的错误
Error in running Java FXML program
我在尝试 运行 我的 java fxml 应用程序时在 netbeans 上遇到错误。
这是我收到的错误:
Caused by: java.lang.NullPointerException at apnc7dsimulator.UIController.handleStart(UIController.java:42) 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();
我在尝试 运行 我的 java fxml 应用程序时在 netbeans 上遇到错误。
这是我收到的错误:
Caused by: java.lang.NullPointerException at apnc7dsimulator.UIController.handleStart(UIController.java:42) 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();