在tableview中显示多个类的数据

时间:2013-06-10 16:34:12

标签: javafx-2 tableview

我正在尝试使用来自多个类的数据填充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

1 个答案:

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

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

希望它有所帮助。