繁体   English   中英

将动态2D数组插入表格视图

[英]Inserting a dynamic 2D array into a tableview

基本上我有四个2D矩阵,在这些矩阵下,我想将每个2D矩阵插入单独的tableview中。 范围是动态的,列应序列化为{1,2,3..etc}

我正在尝试为插入创建函数,但是除了定义固定长度并仅使用所需范围外,我找不到其他方法。

int rowLen, colLen = textfield_input;

double[][] Ci = new double[rowLen][colLen];
double[][] ThetaP = new double[rowLen][colLen];
double[][] ThetaT= new double[rowLen][colLen];
double[][] Re = new double[rowLen][colLen];

void printMatrix(TableView target, double[][] source) {

}

使您的表成为TableView<double[]> (因此,每一行都由double[] ),并根据行的大小创建表列。

如果可以假设您的数组是矩形的(即source[i].length对于所有i都相同),则可以执行以下操作:

void printMatrix(TableView<double[]> target, double[][] source) {

    target.getColumns().clear();
    target.getItems().clear();

    int numRows = source.length ;
    if (numRows == 0) return ;

    int numCols = source[0].length ;

    for (int i = 0 ; i < numCols ; i++) {
        TableColumn<double[], Number> column = new TableColumn<>("Column "+i);
        final int columnIndex = i ;
        column.setCellValueFactory(cellData -> {
            double[] row = cellData.getValue();
            return new SimpleDoubleProperty(row[columnIndex]);
        });
        target.getColumns().add(column);
    }

    for (int i = 0 ; i < numRows ; i++) {
        target.getItems().add(source[i]);
    }
}

如果数组可能不是矩形,则可以在添加时添加其他列。 您需要注意确保不要索引组成行的任何数组:

void printMatrix(TableView<double[]> target, double[][] source) {

    target.getColumns().clear();
    target.getItems().clear();

    int numRows = source.length ;

    for (int rowIndex = 0 ; rowIndex < numRows ; rowIndex++) {
        for (int i = target.getColumns().size(); i < source[rowIndex].length ; i++) {
            TableColumn<double[], Number> column = new TableColumn<>("Column "+i);
            final int columnIndex = i ;
            column.setCellValueFactory(cellData -> {
                double[] row = cellData.getValue();
                double value ;
                if (row.length <= columnIndex) {
                    value = 0 ;
                } else {
                    value = row[columnIndex] ;
                }
                return new SimpleDoubleProperty(value);
            });
            target.getColumns().add(column);
        }
        target.getItems().add(source[rowIndex]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM