我正在尝试使用来自多个类的数据填充tableview。下面的代码用数据填充表,但它为每列创建一个新行。
以下是代码:
try {
col_Result_marks.setCellValueFactory(new PropertyValueFactory("MARKS"));
col_Result_course.setCellValueFactory(new PropertyValueFactory("NAME"));
col_Result_tstdt.setCellValueFactory(new PropertyValueFactory("TSTDT"));
DBAccess db = new DBAccess();
db.DBConn("SELECT blah blah...");
ObservableList dataset = FXCollections.observableArrayList();
while(db.resultSet.next()){
Result rslt = new Result();
rslt.setMARKS(db.resultSet.getInt("MARKS"));
Test tst = new Test();
tst.setTSTDT(db.resultSet.getDate("TST_DT"));
Course crs = new Course();
crs.setNAME(db.resultSet.getString("SUB"));
dataset.addAll(rslt,tst,crs);
}
db.ConnClose();
tbl_Result.setItems(dataset);
}
输出看起来像是类似的东西:
<null> <null> rslt
<null> tst <null>
crs <null> <null>
我希望输出为:
rslt tst crs
答案 0 :(得分:0)
您可以使用字符串创建表格视图,而不是获取三个对象。像这样:
TableView<ObservableList<String>> table = new TableView<>();
定义列以获取字符串:
for (int i = 0; i < NUM_COLUMNS; i++) {
TableColumn<ObservableList<String>, String> col = new TableColumn<>("Col#"+i);
final int finalI = i;
col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList<String>,String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(CellDataFeatures<ObservableList<String>, String> cdf) {
return new SimpleStringProperty(cdf.getValue().get(finalI));
}
});
table.getColumns().add(col);
}
因此,当您更新表视图时,可以基于这三个对象构建字符串列表。
希望它有所帮助。