首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javafx 2.2 -动态表格视图-表格数据

Javafx 2.2 -动态表格视图-表格数据
EN

Stack Overflow用户
提问于 2013-10-04 22:49:25
回答 1查看 5.9K关注 0票数 0

下面javafx代码不是生成2行和2列,而是显示2列和1行。

代码的逻辑。

列变量。添加带有for循环的列,以使表格动态化。计划使用for循环添加数据。

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.util.Callback;

public class FXMLTableViewController {
    @FXML private TableView tableview;

    @FXML
    private void initialize() {
        System.out.println(tableview);
        List<String> columns = new ArrayList<String>();
        columns.add("col1");
        columns.add("col2");
        TableColumn [] tableColumns = new TableColumn[columns.size()];     
        int columnIndex = 0;
        for(int i=0 ; i<columns.size(); i++) {
            final int j = i;
            TableColumn col = new TableColumn(columns.get(i));
            col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                   
               public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {                                                                                             
                    return new SimpleStringProperty(param.getValue().get(j).toString());                       
                }                   
            });
            tableview.getColumns().addAll(col);
        }

        ObservableList<ObservableList> csvData = FXCollections.observableArrayList();
        ObservableList<String> row = FXCollections.observableArrayList();
        ObservableList<String> row1 = FXCollections.observableArrayList();
        row.addAll("d1");
        row.addAll("d11");
        row1.addAll("d2");
        row1.addAll("d22");
        csvData.add(row);
        csvData.add(row1);
        tableview.getItems().add(csvData);

    }

}
EN

回答 1

Stack Overflow用户

发布于 2013-11-08 20:22:02

移除csvData,它将正常工作。执行以下操作:

代码语言:javascript
复制
//ObservableList<ObservableList> csvData = FXCollections.observableArrayList();
ObservableList<String> row = FXCollections.observableArrayList();
ObservableList<String> row1 = FXCollections.observableArrayList();
row.addAll("d1");
row.addAll("d11");
row1.addAll("d2");
row1.addAll("d22");
//csvData.add(row);
//csvData.add(row1);
tableview.getItems().add(row);
tableview.getItems().add(row1);

因为csvData是一个数组,而您要在单元格中添加数组。我已经测试过了,它会工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19184255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档