привязка Java-бинов к динамически добавленному графическому интерфейсу - PullRequest
0 голосов
/ 17 ноября 2018

в Java Я пытаюсь создать графический интерфейс, где я могу динамически добавлять панели с текстовыми полями и тому подобное.Я добавил bean-компонент на панель и привязал весь графический интерфейс к полям bean, я доволен этим.

Теперь я хочу прочитать данные из xml-файла во вновь созданные объекты класса bean-компонента, которыйЯ тоже справился.Проблема в том, что теперь я хочу связать эти новые объекты с панелью графического интерфейса, но только если панель действительно существует, я не показываю данные всех бинов все время.Лучше всего было бы заменить объект bean на панели новым, но он не привязывается, так как привязка установлена ​​для старого объекта.Если бы я просто установил поля, чтобы они соответствовали новому объекту, он не привязывался бы из графического интерфейса к новому объекту.

Я попытался настроить другой набор привязок, чтобы поля новых объектов привязывались к объекту в графическом интерфейсе, который привязан к компонентам графического интерфейса.Код ниже:

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.Я пытался сделать это, но не мог заставить это работать.Есть ли лучшие решения для этого, или я иду в совершенно неправильном направлении, чтобы достичь этого?

Спасибо!

...