Проблемы привязки JTable selectedRow к JTextField (org.jdesktop.beansbinding)
У меня есть приложение 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()
а также bind()
Метод мыши в приемнике таблицы. Но я думаю, что чего-то не хватает во время моего связывания.
Может быть, у одного из вас есть идея. Спасибо!
1 ответ
В документации сказано, что "selectedElement" может быть использован для этой цели. С этим свойством он работает без уродливого unbind()
а также 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", я добавил конвертер в привязку.