Hi, ich bekomme in meiner Java FX Controller Klasse java.lang.NullPointerException.
Die Main Klasse sieht so aus:
hier meine Controllerklasse:
Ich weiß leider nicht, wo der Fehler liegt. Ich möchte eigentlich nur das TableView aus meiner FXML Datei mit SQL Code aus einer Datenbank/Tabelle befüllen, leider scheitere ich an den letzten Fehlern. Kann mir jemand helfen? Danke schonmal.
Die Main Klasse sieht so aus:
Java:
public class Main extends Application {
private Stage primaryStage;
public void start(Stage primaryStage) {
this.primaryStage= primaryStage;
mainWindow();
}
private void mainWindow() {
FXMLLoader loader = new FXMLLoader(Main.class.getResource("MainWindowController.fxml"));
try {
AnchorPane pane = loader.load();
primaryStage.setMinHeight(400.00);
primaryStage.setMinWidth(500.00);
MainWindowController mainWindowController = loader.getController();
mainWindowController.setMain(this);
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
hier meine Controllerklasse:
Java:
public class MainWindowController implements Initializable {
private static Connection con;
private static Statement stat;
private PreparedStatement prep;
private ObservableList<UserData> data;
@FXML private TableView tabelle;
@FXML private Label labelID;
@FXML private Label labelName;
@FXML private Label labelAlter;
@FXML private Label labelAddresse;
@FXML private Label labelGehalt;
@FXML private TextField fieldID;
@FXML private TextField fieldName;
@FXML private TextField fieldAlter;
@FXML private TextField fieldAddresse;
@FXML private TextField fieldGehalt;
@FXML private TextField fieldSuche;
@FXML private Label labelÜberschrift;
@FXML
private TableColumn tableID;
@FXML
private TableColumn tableName;
@FXML
private TableColumn tableAlter;
@FXML
private TableColumn tableAddresse;
@FXML
private TableColumn tableGehalt;
URL url;
ResourceBundle rb;
public Main main;
public void setMain(Main main) {
this.main = main;
}
@FXML
public void handleHinzufügen(ActionEvent me) {
try {
prep = con.prepareStatement("insert into user values(?,?);");
prep.setString(1, fieldID.getText());
prep.setString(2, fieldName.getText());
prep.setString(3, fieldAlter.getText());
prep.setString(4, fieldAddresse.getText());
prep.setString(5, fieldGehalt.getText());
prep.execute();
data.add(new UserData(fieldID.getText(), fieldName.getText(), fieldAlter.getText(), fieldAddresse.getText(), fieldGehalt.getText()));
fieldID.setText(null);fieldName.setText(null);fieldAlter.setText(null);fieldAddresse.setText(null);fieldGehalt.setText(null);
} catch (SQLException ex) {
Logger.getLogger(MainWindowController.class.getName()).log(Level.SEVERE, null, ex);
}
}
@FXML
public void handleTabelleLöschen() {
}
@FXML
public void handleErstellen() {
initialize(url, rb);
}
public void initialize(URL url, ResourceBundle rb) {
try {
Class.forName("org.sqlite.JDBC").newInstance();
stat = con.createStatement();
//stat.executeUpdate("drop table if exists user");
stat.executeUpdate("create table if not exists user(ID varchar(50),Name varchar(50),Alter varchar(50),Addresse varchar(50),Gehalt varchar(50));");
data = FXCollections.observableArrayList();
ResultSet rs = con.createStatement().executeQuery("select * from user");
while (rs.next()) {
data.add(new UserData(rs.getString("ID"), rs.getString("Name"), rs.getString("Alter"), rs.getString("Addresse"), rs.getString("Gehalt")));
}
tableID.setCellValueFactory(new PropertyValueFactory("ID"));
tableName.setCellValueFactory(new PropertyValueFactory("Name"));
tableAlter.setCellValueFactory(new PropertyValueFactory("Alter"));
tableAddresse.setCellValueFactory(new PropertyValueFactory("Addresse"));
tableGehalt.setCellValueFactory(new PropertyValueFactory("Gehalt"));
tabelle.setItems(null);
tabelle.setItems(data);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error on Building Data");
}
}
@FXML
public void handleVerändern() {
}
@FXML
public void handleLöschen() {
}
@FXML
public void handleSuchen() {
}
public static class UserData {
private String tableID;
private String tableName;
private String tableAlter;
private String tableAddresse;
private String tableGehalt;
private UserData(String tableID, String tableName, String tableAlter, String tableAddresse, String tableGehalt) {
this.tableID = new String(tableID);
this.tableName = new String(tableName);
this.tableAlter = new String(tableAlter);
this.tableAddresse = new String(tableAddresse);
this.tableGehalt = new String(tableGehalt);
}
public String IDProperty() {
return tableID;
}
public String NameProperty() {
return tableName;
}
public String AlterProperty() {
return tableAlter;
}
public String AddresseProperty() {
return tableAddresse;
}
public String GehaltProperty() {
return tableGehalt;
}
}
}