我目前正在尝试使用数据库创建JavaFX tableview。我只是一个开始,所以请记住我做错了一些事情。无论如何,我和我的朋友都在尝试学习Java,而我们都陷入了这一困境。我想知道这里有人能帮助我。首先,我们进行了初始化:
我收到此错误:Caused by: java.lang.NullPointerException
at sample.Controller.BuildData(Controller.java:158)
void initialize() {
{
columID.setCellValueFactory(new PropertyValueFactory<>("id"));
columNaam.setCellValueFactory(new PropertyValueFactory<>("naam"));
columAchternaam.setCellValueFactory(new PropertyValueFactory<>("achternaam"));
columWachtwoord.setCellValueFactory(new PropertyValueFactory<>("wachtwoord"));
columWoonplaats.setCellValueFactory(new PropertyValueFactory<>("woonplaats"));
columStraatnaam.setCellValueFactory(new PropertyValueFactory<>("straatnaam"));
columHuisnummer.setCellValueFactory(new PropertyValueFactory<>("straatnummer"));
}
}
FXML:
@FXML
private TableView<UserModel> usersTable;
@FXML
private TableColumn<UserModel, Integer> columID;
@FXML
private TableColumn<UserModel, String> columNaam;
@FXML
private TableColumn<UserModel, String> columAchternaam;
@FXML
private TableColumn<UserModel, String> columWachtwoord;
@FXML
private TableColumn<UserModel, String> columWoonplaats;
@FXML
private TableColumn<UserModel, String> columStraatnaam;
@FXML
private TableColumn<UserModel, String> columHuisnummer;
这是单击按钮时的控制器:
public void BuildData() throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("usertable.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 600, 400);
Stage stage = new Stage();
stage.setTitle("New Window");
stage.setScene(scene);
stage.show();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/bibliotheek?user=root");
Connection con = conn;
ResultSet rs = con.createStatement().executeQuery("SELECT * from klanten");
ObservableList<UserModel> data = FXCollections.observableArrayList();
while (rs.next()) {
UserModel usr = new UserModel();
data.add(usr);
usr.setId(rs.getInt("id"));
usr.setNaam(rs.getString("naam"));
usr.setAchternaam(rs.getString("achternaam"));
usr.setWachtwoord(rs.getString("wachtwoord"));
usr.setWoonplaats(rs.getString("woonplaats"));
usr.setStraatnaam(rs.getString("straatnaam"));
usr.setStraatnummer(rs.getString("straatnummer"));
}
usersTable.setItems(data);
}
catch (SQLException sqlf) {
System.out.println(sqlf.getMessage());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
UserModel:
package model;
public class UserModel {
private int id;
private String naam;
private String achternaam;
private String wachtwoord;
private String woonplaats;
private String straatnaam;
private String straatnummer;
public UserModel(int id, String naam, String achternaam, String wachtwoord, String woonplaats, String straatnaam, String straatnummer) {
this.id = id;
this.naam = naam;
this.achternaam = achternaam;
this.wachtwoord = wachtwoord;
this.woonplaats = woonplaats;
this.straatnaam = straatnaam;
this.straatnummer = straatnummer;
}
public void setId(int id) {
this.id = id;
}
public void setNaam(String naam) {
this.naam = naam;
}
public void setAchternaam(String achternaam) {
this.achternaam = achternaam;
}
public void setWachtwoord(String wachtwoord) {
this.wachtwoord = wachtwoord;
}
public void setWoonplaats(String woonplaats) {
this.woonplaats = woonplaats;
}
public void setStraatnaam(String straatnaam) {
this.straatnaam = straatnaam;
}
public void setStraatnummer(String straatnummer) {
this.straatnummer = straatnummer;
}
public UserModel() {
}
public int getId() {
return id;
}
public String getNaam() {
return naam;
}
public String getAchternaam() {
return achternaam;
}
public String getWachtwoord() {
return wachtwoord;
}
public String getWoonplaats() {
return woonplaats;
}
public String getStraatnaam() {
return straatnaam;
}
public String getStraatnummer() {
return straatnummer;
}
}
我真的希望有人能进一步帮助我。