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!
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.