0

我正在尝试使用来自多个类的数据填充表格视图。下面的代码正在用数据填充表,但它正在为每一列创建一个新行。

这是代码:

   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
4

1 回答 1

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);
    }

因此,当您更新表格视图时,您可以基于三个对象构建一个字符串列表。

希望能帮助到你。

于 2013-06-12T07:40:53.493 回答