Problems binding JTable selectedRow to JTextField (org.jdesktop.beansbinding)

718 Views Asked by At

I have a Java Swing application and want to bind the selected row of a JTable to a JTextField. My binding looks as follows:

    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();

The text field is filled one time at the beginning with '-1', because no row is selected. If I click on a row, there is no update of the text field. One ugly workaround is to call the unbind() and bind() method in the mouse listener of the table. But I think there is something missing during my binding.

Maybe one of you has an idea. Thanks!

1

There are 1 best solutions below

0
user3297735 On BEST ANSWER

The documentation says, that "selectedElement" can be used for this purpose. With this property, it works without the ugly unbind() and bind().

Now the code looks as follows:

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();

To convert "MyObject" to a "String", I added a converter to the binding.