2017-06-27 3 views
0

基本的には、それぞれ別々のテーブルビューに挿入する4つの2D行列があります。範囲は動的で、列は{1、2、3 ..etc}のようにシリアル化する必要があります動的な2D配列をテーブルビューに挿入する

私は挿入用の関数を作成しようとしていますが、固定を定義する以外の方法はありません必要な範囲のみを使用してください。

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) { 

} 
+0

どのテーブルビューに挿入しようとしていますか?スイングテーブルビューですか? – SomeDude

+0

私はJavaFXを使用しています – Explisam

答えて

1

あなたのテーブルを作成しTableView<double[]>(SO各行が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]); 
    } 
} 
+0

ありがとうございました。 – Explisam

関連する問題