Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX动态列设置_Java_Dynamic_Javafx_Tableview_Tablecolumn - Fatal编程技术网

JavaFX动态列设置

JavaFX动态列设置,java,dynamic,javafx,tableview,tablecolumn,Java,Dynamic,Javafx,Tableview,Tablecolumn,我在将列动态添加到TableView时遇到问题。问题是,它将一个单元格的数据添加到整行中。我认为问题可能出在回调中,或者在tableView中添加数据的部分。 这是我的回调方法: Callback<CellDataFeatures<String,String> ,ObservableValue<String>> cb; cb = new Callback<CellDataFeatures<String,String> ,ObservableV

我在将列动态添加到TableView时遇到问题。问题是,它将一个单元格的数据添加到整行中。我认为问题可能出在回调中,或者在tableView中添加数据的部分。 这是我的回调方法:

Callback<CellDataFeatures<String,String> ,ObservableValue<String>> cb;
cb = new Callback<CellDataFeatures<String,String> ,ObservableValue<String>>() { 
   @Override
   public ObservableValue<String> call(CellDataFeatures<String, String> param) {
     return new SimpleStringProperty(param.getValue());
   } 
 };
cb;
cb=新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue());
} 
};
这是我添加数据的地方,listOfNewValues是ArrayList,它包含新的字符串值:

ObservableList<String> addData = FXCollections.observableArrayList();
addData = aktualTable.getItems();
for(String data : listOfNewValues) {
  addData.add(data); 
}
aktualTable.setItems(addData);
observeListAddData=FXCollections.observearraylist();
addData=aktualTable.getItems();
用于(字符串数据:新值列表){
addData.add(数据);
}
aktualTable.setItems(addData);

我认为您缺少了有关
TableView
工作原理的一些基本信息(但如果我在这一点上错了,请原谅)。执行
TableView.setItems(someList)
时,列表中的每个项目都代表表中的整行。因此,您的第二块代码不是“添加数据”,而是替换所有数据。你用一个
字符串来表示每一行,看起来每一列都有相同的数据值。说实话,你说对了一半,我知道.setItem是如何工作的,但在我读了你的评论后,不知怎的我想到了问题所在。谢谢