当前位置: 首页 > 知识库问答 >
问题:

JavaFX列/单元格值不更新

谢奇略
2023-03-14

我最近开始用JavaFX(jdk 1.8.0_66)编程一个应用程序。我有几个表(视图),其中之一应该是关于所有'订阅'对象的概述。因此,我创建了表视图,并用一个可观察的列表填充它:

TableView subsTable = new TableView(SubscriptionAdmin.getObservableSubList());

例如,我的桌子有点像这样:

Subscription | Participants  
Netflix      | 4  
Whatever     | 8
TableColumn<Subscription,String> nameCol = new TableColumn("Subscription");
nameCol.setCellValueFactory(new PropertyValueFactory("name"));
TableColumn<Subscription, Integer> partCol = new TableColumn("Participants");
partCol.setCellValueFactory(
                cellData -> new ReadOnlyObjectWrapper<>(cellData.getValue().getParticipants().size())
);

现在,每当我向列表中添加参与者时,相应单元格中的数字应该增加一个,但不会增加——除非我重新启动应用程序。希望你们中有人能帮助我/解释我有什么问题。

共有1个答案

子车修平
2023-03-14

问题在于,表格(或者更确切地说,是单元格)无法知道数据的变化。如果getParticipants返回一个ObservableList,最好的解决方案是创建一个与其“大小”相关的绑定-

partCol.setCellValueFactory(
            cellData -> Bindings.size(cellData.getValue().getParticipants())
);

如果它不是观测列表,您可以考虑将其更改为一个(毕竟-您希望在显示更改时更新显示)。否则,每当更改列表大小时,都必须手动更新表。

编辑:您可能需要添加。asObject()绑定调用,或者将列的类型更改为Number,而不是Integer。请看这个问题进行讨论。

 类似资料:
  • 我有一个jtable保存账本文件记录并将它们发送出去。

  • 我在更新JTable的单元格值时遇到了一个问题。我想做的是在从JTable中选择一个特定的单元格之后,我应该能够进行编辑,并且该操作必须反映后端的数据库。我在用HSQL。我的表有4列,有一个PK。请给我一个替代和/或提供一些代码,替换的*。我是新来的,只是个初学者。

  • 问题内容: 我的折扣列有一个自动完成功能,其值来自另一个json变量。 这是我的json数组,折扣数据来自此数组。 What I would like to do is (1)更改折扣值后,“ 费用”列应 根据此公式进行更改 值0.145来自json的id列。 (2)在更改折价后,ExtCost列应 据此更改。 数量是最左侧的单元格。 这是我的网格相关代码。 问题答案: 您没有提供有效的演示,但希

  • 有人能帮忙吗?我有一个现有代码,该代码当前根据V列中的单元格值(上诉记录)将整行数据从一张表(质量日志)复制到另一张表(上诉日志)。 之前,它已经从原始(质量日志)表中删除了该行,但我现在希望更改代码,以便将单元格值更改为(正在上诉),然后将其移动到下一页(上诉日志)。 请参阅下面我的代码。我已用**表示我试图更改代码

  • 问题内容: 我正在尝试用Java编写程序来管理我的Bookie帐户。我是java的新手,所以我认为我会选择一些简单的方法来了解事情的原理。我决定使用表格视图并使各个单元格可编辑。我一直在关注本教程http://java- buddy.blogspot.co.uk/2012/04/javafx-2-editable-tableview.html 。它详细说明了如何使用Java代码执行此操作,并将其复