[英]JavaFX pulling value from nth column of every row in a TableView
对不起标题,我想不出什么更好的了。
下面是我的代码,这些代码用于创建列并从ObservableList自动填充4列中的三列。 用户可以编辑第4列“#排序”。 我的目标是遍历每一行,并用用户为其输入的值更新该行的项目。 我已经成功地遍历了行并从行中获取Item对象,但是我没有找到合适的方法来获取该行的订单值。
TableView tableView = new TableView();
TableColumn itemCodeColumn = new TableColumn("Item Code");
TableColumn itemDescriptionColumn = new TableColumn("Description");
TableColumn numAvailableColumn = new TableColumn("# in Stock");
TableColumn numOrderColumn = new TableColumn("# Ordered");
itemCodeColumn.setCellValueFactory(new PropertyValueFactory<Item,Integer>("itemCode"));
itemDescriptionColumn.setCellValueFactory(new PropertyValueFactory<Item,String>("itemDesc"));
numAvailableColumn.setCellValueFactory(new PropertyValueFactory<Item,Integer>("quantity"));
我已经可以使用以下方法访问tableView中找到的所有项目
for(Object it : tableView.getItems()){
Item it2 = (Item) it;
}
但是,这仅给我提供了一个用于更新该订购值的对象的引用,我仍然需要一种从表中提取实际订购号的方法。 为此,我使用了我在网上找到的以下代码。 请注意,itemGUIList是一个ObservableList,用于填充表。
for(int c=0;c<itemGUIList.size();c++){
Object o;
o = tableView.getColumns().get(c).getCellObservableValue(0).getValue();
}
我在这里遇到的问题是方法getCellObservableValue()给了我错误“找不到符号”。 搜索此内容并没有给我任何结果,这段代码似乎对其他所有人都有效。
如果有人能够指出我所缺少的内容,或者有更好的方法来解决此问题,我将不胜感激。 如果您需要我再发布我的代码,请告诉我,我会的。 提前谢谢你。
在TableView
的声明中,您使用的是原始类型。
这导致tableView.getColumns()
的类型为ObservableList
,因此tableView.getColumns().get(c)
为Object
,其中不包含getCellObservableValue
方法。
即使使用?
,也应在声明中添加类型参数?
解决此问题:
TableView<Item> tableView = new TableView<>();
要么
TableView<?> tableView = new TableView<>();
注意:
如果可能的话,最好不要使用原始类型,因为这样可以使编译器进行某种类型检查,并且还避免了在代码中编写某些强制类型转换,例如
for(Object it : tableView.getItems()) {
Item it2 = (Item) it;
}
可以简单地更改为
for(Item it2 : tableView.getItems()) {
}
实际上,实际上不必使用TableColumn
来检索订单数。 您可以简单地从项目本身(或存储此数据的其他位置)中检索它,例如:
Item item = tableView.getItems().get(0);
int ordered = item.getOrdered();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.