繁体   English   中英

JavaFX从TableView中每行的第n列提取值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM