BeansBinding JTable в NetBeans - PullRequest
       24

BeansBinding JTable в NetBeans

3 голосов
/ 22 июля 2009

Я хочу отобразить список bean-компонентов в JTable. Идея состоит в том, что каждый столбец будет предварительно выбранным полем в бине, а каждая строка будет бином в списке. Слайд № 32 выглядит очень многообещающе: http://swinglabs.org/docs/presentations/2007/DesktopMatters/beans-binding-talk.pdf

Однако NetBeans не очень дружелюбен, позволяя мне назначить поле компонента для столбца. Я могу щелкнуть правой кнопкой мыши по JTable, выбрать Bind-> Elements и привязать его к моему списку компонентов. Тем не менее, это не позволит мне указать, что идет в каждом столбце. Единственный вариант - создать привязку самостоятельно, что в значительной степени делает NetBeans бесполезным для подобных вещей.

Есть ли деталь, по которой я скучаю? Похоже, что JTable BeansBinding в NetBeans просто не работает.

Спасибо

Ответы [ 3 ]

6 голосов
/ 22 июля 2009

у меня это работает. Вы действительно не можете использовать опцию меню «Связать» для JTables. Вот как заставить его работать:

  1. Щелкните правой кнопкой мыши JTable.
  2. Нажмите «Содержимое таблицы».
    1. Связывание Источник: Форма
    2. Связующее выражение: $ {var} (где var - имя списка bean-компонентов).
  3. Перейдите на вкладку «Столбцы».
  4. Сопоставить столбец с выражением. Он должен выглядеть примерно так: $ {id}, а не $ {var.id}.

Примечание. Каждое поле, отображаемое в столбце, должно иметь геттер.

4 голосов
/ 22 июля 2009

Каким бы привлекательным ни было использование IDE для такого рода вещей, на самом деле ничто не заменит его самому кодированию.

Лично я предпочитаю Глазированные списки для представления бобов в таблицах. Потратьте 2 минуты и посмотрите видео, и я гарантирую, что вас зацепят. Имея менее 15 строк кода, вы получите то, что искали, и будете иметь огромный контроль над дисплеем - плюс фильтрация, сортировка и все другие интересные вещи, когда вы будете готовы к этому.

0 голосов
/ 07 февраля 2010

Попробуйте сделать список заметным. измените его инициализацию на что-то вроде этого:

list1 = ObservableCollections.observableList(new ArrayList<Person>());

Тогда много сотрудников должно начать работать. Если вы привязываетесь к bean-компоненту, убедитесь, что вы вызвали событие свойства изменено в методе set свойства, которое вы хотите привязать, добавьте этот код

private final PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);

public void addPropertyChangeListener(PropertyChangeListener listener) {
    changeSupport.addPropertyChangeListener(listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
    changeSupport.removePropertyChangeListener(listener);
}

исправить импорт, а затем сделать что-то вроде этого

public void setFirstName(String firstName) {
    String oldFirstName = this.firstName;
    this.firstName = firstName;
    changeSupport.firePropertyChange("firstName", oldFirstName, firstName);
}
...