我正在为银行账户管理编写一个非常简单的UI。我尝试获取用户在文本框中写入的任何名称,并将其设置为字符串。我还试图通过使用textArea
而不是System.out.print();
向用户打印一些东西,但每当我尝试getText()
或setText()
时,我都会收到以下错误:
原因:java.lang.NullPointerException:无法调用"javafx.scene.control.TextField.getText(("因为";this.txtName";是在应用程序中为null。Controller.addPersonClick(Controller.java:26(.
如有帮助,不胜感激。我正在使用eclipse和场景生成器。
这就是我的代码在class Controller
中的样子(不是全部(:
PersonRegister register = new PersonRegister();
Person per = new Person();
Account account = new Account();
@FXML
public void addPersonClick(ActionEvent event) {
String nameIn = txtName.getText(); //Error
String pNbrIn = "temp"; //Works fine
if(register.findPerson(pNbrIn) == null) {
per.setName(nameIn);
per.setPNbr(pNbrIn);
register.addPerson(per);
System.out.println("Added "+per.getName()+" "+per.getPNbr()); //Works fine
txtAreaResponse.setText("Added "+per.getName()+" "+per.getPNbr());//Error
} else {
System.out.println("Person already exists");//Works fine
txtAreaResponse.setText("Person already exists"); //Error
}
}
以下是我的UI代码(关于相关的textField
和textArea
(:
<TextField layoutX="16.0" layoutY="32.0" />
<TextArea layoutX="17.0" layoutY="263.0" prefHeight="134.0" prefWidth="402.0" />
在场景生成器中给TextField一个ID,我假设下面的代码中有myTextField
。然后在控制器类中将其声明为这样。
@FXML
private TextField myTextField;
我也处于同样的情况,但相反,我在场景生成器以及页面的控制器中分配了Id