我正在用 Java 制作一个属性编辑器小部件。这个小部件将接收一个 java bean,对其进行复制,然后动态地创建一个带有 swing 组件的 JPanel 来表示该 bean 中的字段。我想将摇摆组件绑定到副本,以便在调用 getFinishedBean() 方法时,返回副本,并将其字段设置为摇摆组件中设置的值。我试图通过遍历每个字段、确定其类型、为其创建适当的 JComponent、将该组件绑定到 bean 副本,然后将该组件添加到面板来实现此目的。我的问题是 bean 的属性似乎没有被绑定。
这是绑定代码:
if((component instanceof JCheckBox))
{
JCheckBox checkBox = (JCheckBox) component;
BeanProperty<JCheckBox, Boolean> jCheckBoxBeanProperty = BeanProperty.create("selected");
BeanProperty<T, Boolean> beanProperty = BeanProperty.create(field.getName());
AutoBinding<JCheckBox, Boolean, T, Boolean> autoBinding = Bindings.createAutoBinding(
UpdateStrategy.READ,
checkBox, jCheckBoxBeanProperty, finishedBean, beanProperty);
autoBinding.bind();
builder.append(field.getName() + ":", checkBox);
}
此代码段没有编译错误或警告,但finishedBean 的属性没有改变。我非常接近,我只需要将 JComponents 中的值获取到完成的 bean 中。