2015-01-31 73 views
0

我想動態地填充一個TableView的數組字符串列表(我想有更好的方法來處理信息,但它是我被給予的...),所以我創建一個tableView,創建所有列和東西,但是我在填充tableview的時候丟失了。如何從javaFX中的String []列表填充TableView?

列表裏面有所有的字符串數組,所有東西似乎都可以工作,任何數組或類似的東西都沒有錯位數據,當我運行項目時,列名顯示爲我想要的,並且在那裏是我列表中每個數組的tableview上的一行,但我無法讓它顯示信息。

我想我錯過了將列表中的信息設置到單元格中的語句,但我看不到實現它的方法。任何幫助將在其重量的cookie中表示感謝:0

這是目前使用的進程的代碼。

int tam = regs.length-3; 
String[] aux = new String[regs.length-3]; 
ObservableList<String[]> list = FXCollections.observableArrayList(); 

for (int i = 0; i < db.length; i++) {    
    aux[(i % tam)] = db[i]; 
    if (((i % tam) == tam-1) & (i > 0)) { 
     list.add(aux); 
     aux = new String[tam]; 
    } 
} 

TableView<String[]> table = new TableView<>(); 

TableColumn[] tableColumns = new TableColumn[tam]; 
for (int i = 3; i < regs.length; i++) { 
    tableColumns[i-3] = new TableColumn(regs[i]); 
} 
table.getColumns().addAll(tableColumns); 

table.setItems(list); 

回答

1

您需要在表列中設置單元值工廠。類似於

TableColumn[] tableColumns = new TableColumn[tam]; 
for (int i = 3; i < regs.length; i++) { 
    tableColumns[i-3] = new TableColumn(regs[i]); 
    final int index = i - 3 ; // I think, don't really understand what you're doing with indexes... 
    tableColumns[i-3].setCellValueFactory(new Callback<CellDataFeatures<String[], String>>, ObservableValue<String>>) { 
     @Override 
     public ObservableValue<String> call(CellDataFeatures<String[], String> cellData) { 
      return new ReadOnlyStringWrapper(cellData.getValue()[index]); 
     } 
    }); 
} 
相關問題