Metawidget을 사용하여 GUI의 객체 값을 자동으로보고 편집합니다. 개체의 초기 값을 바인딩하고 각각의 GUI 구성 요소에서 볼 수 있습니다. 그러나 GUI에서 값을 변경하면 이러한 변경 사항이 객체와 다시 동기화되지 않습니다. 이 내용은 다소 달라지며 here (비추천) 및 here (더 이상 사용되지 않음)입니다.Metawidget을 사용하여 GUI의 값과 객체 동기화
다음public static class Person {
private String mName;
public String getName() { return this.mName; }
public void setName(String name) { this.mName = name; }
@UiAction
public void showPersonObject() {
JOptionPane.showMessageDialog(frame, this.mName);
}
@UiAction
public void bind() {
metawidget.getWidgetProcessor(
BeansBindingProcessor.class)
.save(metawidget);
}
}
이 metawidget가 구성되어 내 주요 방법입니다 : 여기
내 비즈니스 오브젝트 인 documentation에서public static void main(String[] args) {
// Person
Person person = new Person();
person.setName("A cool name");
// Metawidget
metawidget = new SwingMetawidget();
metawidget.setInspector(new CompositeInspector(
new CompositeInspectorConfig().setInspectors(
new PropertyTypeInspector(),
new MetawidgetAnnotationInspector(),
new BeanValidationInspector())));
metawidget.addWidgetProcessor(
new BeansBindingProcessor(
new BeansBindingProcessorConfig().setUpdateStrategy(
UpdateStrategy.READ_WRITE)));
metawidget.setToInspect(person);
// Create Frame
...
}
그것이 말했다되는 :
하는 경우 READ 또는 READ_WRITE로 설정된 경우 (기본값은 READ_ONCE 임) 검사중인 객체 은 Pr opertyChangeSupport. READ_WRITE로 설정하면 UI 업데이트가 자동으로 다른 클라이언트가 수동으로 호출해야합니다, 다시 setToInspect에 동기화 (sync) 저장 :
myMetawidget.getWidgetProcessor (BeansBindingProcessor.class) .save (myMetawidget를)
UpdateStrategy을 READ 및/또는 READ_WRITE로 설정하거나 BeansBindingProcessor에서 save()를 호출 해 보았습니다. 오브젝트 항상 그러나
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
this.pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
this.pcs.removePropertyChangeListener(listener);
}
public void setName(String name) {
String oldName = this.mName;
this.mName = name;
this.pcs.firePropertyChange("name", oldName, mName);
}
의 담당자 : 나는 또한 다음 코드를 추가하는 것과 동일하다, (나는 this과의 다스 려 생각)을 사람 객체에 의해 PropertyChangeSupport를 제공하기 위해 노력했습니다 원래 값을 유지합니다.
미리 감사드립니다.