Javafx 2.2-动态表视图-表数据 [英] Javafx 2.2 - Dynamic table view - table data
本文介绍了Javafx 2.2-动态表视图-表数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面的javafx代码不会生成2行和2列,而是显示2列和1行.
Below javafx code is not generating 2 row and 2 column, instead of that it display 2 column and 1 row.
代码逻辑.
列变量.使用for循环添加列以使表动态化.计划使用for循环添加数据.
Column variable. Add column with for loop to make table dynamic. Planning to add data with for loop.
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);
}
}
推荐答案
删除csvData,它将起作用.请执行以下操作:
Remove csvData it will work. do the following :
//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是一个数组,并且您要在单元格中添加数组.我已经测试过了,可以正常工作.
Because csvData is an array and you are adding array in cell. I have tested it will work fine.
这篇关于Javafx 2.2-动态表视图-表数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文