这是我遇到的问题的一个简单示例。
我有一个简单的课程:
public class Test{
Integer a;
Integer b;
//getters and setters
public void getC()
{
return a + b;
}
}
请注意,它有一个名为 C 的属性,它是 a 和 b 的总和。
然后我将它绑定到一个 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 添加绑定。(注意这只是我使用的通用代码)
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 在其中一个值发生变化时更新。这不会发生。
我猜表需要刷新以反映实体的新值?
谁能解释我需要做些什么来实现这一点?我需要添加一些额外的 bean 绑定属性吗?
这是我正在使用的 bean 绑定库:
<dependency>
<groupId>org.jdesktop</groupId>
<artifactId>beansbinding</artifactId>
<version>1.2.1</version>
</dependency>
org.jdesktop.swingbinding.SwingBindings