我制作了一个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;
}
答案 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方法,您可以在显示场景时加载内容。