从数据库添加菜单按钮

时间:2018-06-21 13:09:41

标签: java javafx jdbc while-loop menu

我正在尝试从数据库中的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;
    }
}

1 个答案:

答案 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中,并在以后处理。