Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数据库添加菜单按钮_Java_Javafx_Jdbc_While Loop_Menu - Fatal编程技术网

Java 从数据库添加菜单按钮

Java 从数据库添加菜单按钮,java,javafx,jdbc,while-loop,menu,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");

我试图从数据库中添加一个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;
    }
}

您不会将新创建的添加到。创建一个临时变量,以便插入新创建的
MenuItem
。您可能还需要添加一个事件处理程序来处理菜单项上的点击事件,因为在下一次迭代中,您将丢失对它的引用

while (rs.next()) {
     UserModel usr = new UserModel();
     String naam = rs.getString("naam");
     usr.setNaam(naam);

     MenuItem temp = new MenuItem(naam);
     dropdownKlant.getItems().addAll(temp);
}

或者,您可能希望将这些创建的
菜单项
存储到单独的
列表
中,并在以后处理它们。

您在结果循环中创建了一个新用户,但从未使用过它,并且仅创建一个菜单项后,它可能无法工作:(我用一个动作事件尝试了它,结果是什么?
它不工作?
?结果是什么?有错误吗?你试过在while迭代中进行调试吗?到目前为止我没有错误,我真的不知道如何进行调试,如果你使用print-in-loop检查你的数据库是否真的给了你,我可以发送完整的代码。)result@Javaprogrammern00b而且检查
菜单按钮是否在显示的场景中。在按钮中单击do
System.out.println(dropdownKlant.getItems().size()+“\n”+dropdownKlant.getScene().getWindow().isShowing());
在try/catch之后