Javafx 2 在tableview中显示来自多个类的数据

Javafx 2 在tableview中显示来自多个类的数据,javafx-2,tableview,Javafx 2,Tableview,我试图用来自多个类的数据填充tableview。下面的代码正在用数据填充表,但它正在为每一列创建新行 代码如下: try { col_Result_marks.setCellValueFactory(new PropertyValueFactory("MARKS")); col_Result_course.setCellValueFactory(new PropertyValueFactory("NAME")); col_Result_tst

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

只需使用字符串即可创建表视图,而无需获取三个对象。像这样:

TableView<ObservableList<String>> table = new TableView<>();
TableView table=newtableview();
并定义要获取字符串的列:

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);
    }
for(int i=0;i
因此,在更新表视图时,可以基于这三个对象构建字符串列表


希望有帮助。

您在数据集中为每个SQL结果添加了三个对象,因此JavaFX添加了三行。您可能需要添加一个带有MARKS、rsr和src属性的类。@如果您的意思是这样的话,那么为查询输出创建一个单独的类是不可行的。我的每个主要实体都有单独的类。有什么关于实施的建议吗?我是javafx的新手,请原谅我的无知。不幸的是,它不适合我。它说:类型回调不是泛型的;不能使用参数对其进行参数化
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);
    }