Проблемы привязки 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", я добавил конвертер в привязку.

Другие вопросы по тегам