0

我有一个 Java Swing 应用程序,想将选定的 JTable 行绑定到 JTextField。我的绑定如下所示:

    BeanProperty<JTable, Integer> tableBeanProperty = BeanProperty.create("selectedRow");
    BeanProperty<JTextField, String> textFieldProperty = BeanProperty.create("text");
    Binding<JTable, Integer, JTextField, String> binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, table1, tableBeanProperty, field1, textFieldProperty);
    binding.bind();

文本字段在开始时填充了一次“-1”,因为没有选择任何行。如果我单击一行,则文本字段不会更新。一种丑陋的解决方法是在表的鼠标侦听器中调用unbind()andbind()方法。但我认为在我的绑定过程中缺少一些东西。

也许你们中的一个人有一个想法。谢谢!

4

1 回答 1

0

文档说,“selectedElement”可以用于此目的。有了这个属性,它就可以在没有丑陋的unbind()and的情况下工作bind()

现在代码如下所示:

BeanProperty<JTable, MyObject> tableBeanProperty = BeanProperty.create("selectedElement");
BeanProperty<JTextField, String> textFieldProperty = BeanProperty.create("text");
Binding<JTable, MyObject, JTextField, String> binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, table1, tableBeanProperty, field1, textFieldProperty);
binding.bind();

为了将“MyObject”转换为“String”,我在绑定中添加了一个转换器。

于 2014-02-12T14:23:57.543 回答