Java Bean绑定到动态添加的GUI

时间:2018-11-17 14:00:13

标签: java user-interface binding javabeans

在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。我试图做到这一点,但无法使其正常工作。有什么更好的解决方案,还是我朝着完全错误的方向去实现这一目标?

谢谢!

0 个答案:

没有答案