JavaFX Scenebuilder从数据库填充listView

时间:2017-06-11 13:21:43

标签: java javafx scenebuilder

我制作了一个JavaFX Scenebuilder" Application"我需要用我的数据库中的东西填充我的listView。问题是我不知道怎么做,也不知道在哪里看。

有人可以帮助我吗?

以下是我与数据库连接的代码。这是我唯一拥有的东西。和场景构建器" Sample.fxml"档案当然。

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));

        Connection Conn = null;

        try {
            Conn = DriverManager.getConnection("jdbc:mysql://localhost/hitdossier", "root", "");
            System.out.println("Verbonden met de database");
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            System.out.println("Verbinding met de database is mislukt.");
        }

        Statement stmt = null;
        ResultSet rs = null;
        try {
            stmt = Conn.createStatement();
            rs = stmt.executeQuery("SELECT naam FROM artiest");

            while (rs.next()) {
                System.out.println(rs.getString(1));
            }
        } catch (SQLException e) {

        }

        primaryStage.setTitle("Eindopdracht Java Periode 4");
        primaryStage.setScene(new Scene(root, 700, 650));
        primaryStage.show();
    }

这是我的Controller.java

package sample;

import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListView;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;

public class Controller {
   @FXML
   private ComboBox<String> cboWeek;

}

2 个答案:

答案 0 :(得分:1)

我会选择以下代码:

首先定义listView和一个可观察列表(假设你的fxml中有一个带有id“list”的ListView):

@FXML
ListView<String> list;

ObservableList<String> items = FXCollections.observableArrayList();

然后将列表视图设置为项目列表:

list.setItems(items);
在你的while循环中

只需将结果添加到项目列表中:

items.add(rs.getString(1));

答案 1 :(得分:0)

您可以执行以下操作(代码未经过测试):

Main.java:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));

        primaryStage.setTitle("Eindopdracht Java Periode 4");
        primaryStage.setScene(new Scene(root, 700, 650));
        primaryStage.show();
    }
}

Controller.java(与包含id = list的ListView的fxml相关联):

public class Controller implements Initializable{
   @FXML
   private ListView<String> list;

   private ObservableList<String> items = FXCollections.observableArrayList();

   @Override
   public void initialize(URL location, ResourceBundle resources) {
       list.setItems(items);

       Connection Conn = null;

       try {
           Conn = DriverManager.getConnection("jdbc:mysql://localhost/hitdossier", "root", "");
           System.out.println("Verbonden met de database");
       } catch (SQLException e) {
             System.out.println(e.getMessage());
             System.out.println("Verbinding met de database is mislukt.");
       }

       Statement stmt = null;
       ResultSet rs = null;
       try {
           stmt = Conn.createStatement();
           rs = stmt.executeQuery("SELECT naam FROM artiest");

           while (rs.next()) {
               items.add(rs.getString(1));
               System.out.println(rs.getString(1));
           }
       } catch (SQLException e) {

       }

   }

}

通过实现initialize方法,您可以在显示场景时加载内容。