java在JavaFX中填充TableView
我是这里的新手,我在JavFX中的表视图(即tblStudent)不包含
我想要的唱片。如何做到这一点,请帮助我
public void populateData(){
Connection c ;
data = FXCollections.observableArrayList();
try{
c = ConnectionClass.connect();
//SQL FOR SELECTING ALL OF CUSTOMER
String SQL = "SELECT * FROM `student`";
//ResultSet
ResultSet rs = c.createStatement().executeQuery(SQL);
studentIDCol = new TableColumn("Student ID");
nameCol = new TableColumn("Name");
addressCol = new TableColumn("Address");
ageCol = new TableColumn("Age");
contactnoCol = new TableColumn("Contact Number");
while(rs.next()){
//Iterate Row
ObservableList<String> row = FXCollections.observableArrayList();
row.add(rs.getString("id"));
row.add(rs.getString("name"));
row.add(rs.getString("address"));
row.add(rs.getString("age"));
row.add(rs.getString("contact_num"));
System.out.println("Row [1] added "+row );
data.add(row);
}
//FINALLY ADDED TO TableView
tblStudent.getItems().setAll(data);
}catch(Exception e){
e.printStackTrace();
System.out.println("Error on Building Data");
}
}
有人知道吗
# 1 楼答案
您需要将单元格值工厂设置为所有列,如下所示:
我还建议您将查询提取到服务,因为该查询将阻止JavaFX线程。签出http://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm
用测试数据检查这个完整的例子
如果您使用的是FXML文件。您需要跳过TableColumn的初始化步骤
将TableColumn声明为控制器类中带有@FXML注释的文件中的字段。确保您实现了javafx。fxml。可初始化。在initialize方法中,您可以对每一列进行配置。并避免将列添加到表中,因为它们已经在表视图中
如果您在FXML中定义TableView,下面是一个示例:
那么您的控制器类将如下所示:
希望能有帮助