我正在尝试从数据库中的Java中添加菜单按钮。我在PhpMyAdmin中有带有名称的表。单击按钮后,将显示一个列表,其中包含数据库中的所有名称。看来这行不通。有人可以帮我吗?我尝试了不同的方法,但似乎并没有真正起作用。
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 naam from klanten");
while (rs.next()) {
UserModel usr = new UserModel();
usr.setNaam(rs.getString("naam"));
}
dropdownKlant.getItems().addAll(new MenuItem("naam"));
} catch (SQLException sqlf) {
System.out.println(sqlf.getMessage());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
我的FXML:
@FXML
private MenuButton dropdownKlant;
我的用户模型:
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;
}
}
答案 0 :(得分:1)
您不会将新创建的MenuItem
添加到Menu
中。创建一个临时变量以插入新创建的MenuItem
。您可能还想添加一个事件处理程序,以处理菜单项上的on click事件,因为在下一次迭代中,您将失去对它的引用。
while (rs.next()) {
UserModel usr = new UserModel();
String naam = rs.getString("naam");
usr.setNaam(naam);
MenuItem temp = new MenuItem(naam);
dropdownKlant.getItems().addAll(temp);
}
或者,您可能希望将这些创建的MenuItem
存储到单独的List
中,并在以后处理。