这是我遇到的问题的一个简单示例。更新后刷新JTable
我有一个简单的类:
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,和测试对象的温度。 (注意:这只是普通的代码,我用)
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在这些值之一发生变化时进行更新。这不会发生。
我想表需要刷新以反映实体的新值?
任何人都可以解释我需要做什么来做到这一点?我是否需要添加一些aditional bean绑定属性?
这里是豆绑定库我使用:
<dependency>
<groupId>org.jdesktop</groupId>
<artifactId>beansbinding</artifactId>
<version>1.2.1</version>
</dependency>
org.jdesktop.swingbinding.SwingBindings
你使用哪种SwingBindings? – MadProgrammer 2013-02-08 22:39:50
@MadProgrammer你的意思是图书馆?我对该信息进行了更新 – user489041 2013-02-08 22:43:18
是的,谢谢你:D – MadProgrammer 2013-02-08 22:52:17