gpt4 book ai didi

java - 更新后刷新 JTable

转载 作者:行者123 更新时间:2023-12-04 05:12:06 25 4
gpt4 key购买 nike

这是我遇到的问题的一个简单示例。

我有一个简单的类(class):

public class Test{
Integer a;
Integer b;

//getters and setters

public void getC()
{
return a + b;
}

}

请注意,它有一个名为 C 的属性,它是 a 和 b 的总和。

然后我将它绑定(bind)到一个 JTable,如下所示:
List<Test> testList = new ArrayList<Test>();
...add some Test objects to the list
ObservableList observableList = ObservableCollections.observableList(testList);
JTable table = new JTable();
JTableBinding tableBinding = SwingBindings.createJTableBinding(AutoBinding.UpdateStrategy.READ_WRITE, observableList, table);

然后,我使用以下代码为测试对象的每个属性 a、b 和 c 添加绑定(bind)。 (注意这只是我使用的通用代码)
BeanProperty beanProperty = BeanProperty.create(properyName);
JTableBinding.ColumnBinding columnBinding = tableBinding.addColumnBinding(beanProperty);
columnBinding.setColumnName(columnName);
columnBinding.setColumnClass(clazz);
columnBinding.setEditable(editable);

现在这将正确显示表格,但是当我更新表格中的 a 或 b 时会出现问题。由于 c 是根据 a 和 b 计算的,因此我希望 c 在其中一个值发生变化时更新。这不会发生。

我猜表需要刷新以反射(reflect)实体的新值?

谁能解释我需要做些什么来实现这一点?我需要添加一些额外的 bean 绑定(bind)属性吗?

这是我正在使用的 bean 绑定(bind)库:
<dependency>
<groupId>org.jdesktop</groupId>
<artifactId>beansbinding</artifactId>
<version>1.2.1</version>
</dependency>


org.jdesktop.swingbinding.SwingBindings

最佳答案

作为引用,讨论了根本问题here ,并引用了手动解决方案here两个DefaultTableModelAbstractTableModel .实际上,更改为 ab必须通知任何 TableModelListenerc可能已经改变。这可能有助于指导您搜索合适的 bean 绑定(bind)属性。

关于java - 更新后刷新 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com