我试图创建一个图形窗口,以便在javafx中向数据库添加条目。 没有问题显示'添加条目'窗口,但无法添加条目,然后刷新我的数据库。 我在getPers和CreatePerson
上得到一个NullPointerException我尝试了很多东西来初始化这些变量而没有成功。我怎么能这样做?
这是我的课程' addPers'
public class addPers {
@FXML
private TextField nameField;
@FXML
private TextField ageField;
@FXML
private Button Cancel;
@FXML
private Button CreatePerson;
private Stage dialogStage;
private Pers pers;
private boolean okClicked = false;
private MainApp mainApp;
private PersManager persManager;
private AnchorPane databaseLayout;
private Object databaseLayoutController;
private Object rootLayout;
@FXML
private void initialize() {
}
public void setDialogStage(Stage dialogStage) {
this.dialogStage = dialogStage;
}
public void setPers(Pers pers) {
this.pers = pers;
nameField.setText(pers.getName());
ageField.setText(Integer.toString(pers.getAge()));
}
@FXML
private void Cancel() {
dialogStage.close();
}
@FXML
public void CreatePerson(ActionEvent event) throws Exception{
// Check Form Validation;
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Please input carefully");
alert.setHeaderText(null);
if(nameField.getText().equals("")){
alert.setContentText("no valid name");
alert.showAndWait();
}
else if(ageField.getText().equals("")){
alert.setContentText("no valid age");
alert.showAndWait();
}
else{
getPers();
// Display Dialogue;
alert.setAlertType(AlertType.INFORMATION);;
alert.setContentText("Person entry created successfully");
alert.showAndWait();
}
// Change scene;
Stage stage = (Stage) CreatePerson.getScene().getWindow();
Scene scene = CreatePerson.getScene();
FXMLLoader loader = new FXMLLoader(getClass().getResource("../views/Database.fxml"));
scene.setRoot(loader.load());
stage.setScene(scene);
stage.setTitle("alt database");
stage.show();
}
public ArrayList<Pers> getPers() throws SQLException {
ArrayList<Pers> ListPers = new ArrayList<Pers>();
String query = "name, age FROM PERSONS_DB ORDER BY name;";
try {
((MainApp) this.mainApp).getDatabase().connect();
ResultSet rslt = ((MainApp) this.mainApp).getDatabase().getResultOf(query);
while (rslt.next()) {
ListPers.add(new Pers
(rslt.getString("name"),
rslt.getInt("age")
));
}
rslt.close();
try {
mainApp.showDatabaseDialog();
FXMLLoader loader = new FXMLLoader();
AnchorPane databaseEditDialog = (AnchorPane) loader.load();
DatabaseEditController controller = loader.getController();
Stage dialogStage = new Stage();
dialogStage.setTitle("database");
dialogStage.initModality(Modality.WINDOW_MODAL);
Window primaryStage = null;
dialogStage.initOwner(primaryStage);
Parent page = null;
Scene scene = new Scene(page);
dialogStage.setScene(scene);
dialogStage.show();
} catch (IOException e) {
e.printStackTrace();
}
} finally {
}
return ListPers;
}
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
}
}