在Java中,我试图创建一个GUI,在其中可以动态添加带有文本字段等的面板。我在面板上添加了一个bean,并将所有GUI绑定到bean字段,对此我感到满意。
现在,我想从xml文件中读取数据到bean类的新生成的对象,我也对此进行了管理。现在的问题是,我想将这些新对象绑定到GUI面板,但是只有当该面板实际存在时,我才不会一直显示所有bean的数据。用新的更改面板上的bean对象是最好的,但是由于绑定是在旧对象上设置的,所以它不会绑定。如果仅将字段设置为与新对象匹配,则它将不会从GUI绑定到新对象。
我尝试的是设置另一组绑定,因此新对象字段绑定到GUI上的对象,该对象也绑定到GUI组件。下面的代码:
public static void bindWTs(WorkTask oldWT, WorkTask newWT){
BindingGroup newBG=new BindingGroup();
for (Field cField : newWT.getClass().getDeclaredFields()) {
String fieldName = cField.getName();
if(fieldName.toUpperCase().startsWith("PROP")){
}
else{
newBG.addBinding(org.jdesktop.beansbinding.Bindings.createAutoBinding(READ_WRITE,oldWT,org.jdesktop.beansbinding.BeanProperty.create(cField.getName().toString()),newWT,org.jdesktop.beansbinding.BeanProperty.create(cField.getName().toString())));
}
}
newBG.bind();
newWT.setMyBindings(newBG);
}
这似乎可以完成任务,但工作起来似乎很慢,最好不要绑定所有内容,而只需替换bean对象并重新绑定GUI。我试图做到这一点,但无法使其正常工作。有什么更好的解决方案,还是我朝着完全错误的方向去实现这一目标?
谢谢!