jTable bebbinding
Я вставляю данные из util.List в JTable с beansbinding. Я обернул ArrayList в список ObservableList и Observable, привязанный к данным, привязанным к uitl.List.I, в Netbeans и настроил свойства в "Содержимое таблицы" в Netbeans "JTable Beanbinding". опции'. При первом обновлении списка JTable также обновляется, и это нормально. Но во второй раз, когда я устанавливаю другой util.List, который приводится в список Observable, к списку, связанному с JTable, список обновляется, но JTable не обновляется (но когда я устанавливаю список, System.out.pr.. печатает правильные значения списка, здесь я изменил util.List на ObservableList и наоборот, чтобы найти, где проблема, но не результат, как я ожидал)(но когда я добавляю объекты в список, связанный с JTable, тогда JTable был обновлен.) Как я могу обновить JTable при обновлении списка (это означает, что когда я устанавливаю новый список, таблица также обновляется каждый раз, когда я устанавливаю новый список).
Вот мой код, используемый для установки списка
public List<Customer> getSuggestionList() {
return suggestionList;
}
public void setSuggestionList(ObservableList suggestionList) {
try {
List oldSuggestionList = this.suggestionList;
this.suggestionList = suggestionList;
propertySupport.firePropertyChange(PROP_SUGGESTIONLIST, oldSuggestionList, suggestionList);
System.out.println("Suggestionlist is setted-----------");
Customer c = (Customer) suggestionList.get(0);
System.out.println("sugesstion list customer--------" + c.getCustFname());
} catch (Exception e) {
e.printStackTrace();
}
}
1 ответ
Только что проверил: он работает как положено (ручное кодирование, конечно, не затрагивает Netbeans), sourceBean - класс, у которого есть свойство offertionList;
BindingGroup context = new BindingGroup();
BeanProperty valuesProperty = BeanProperty.create("suggestionList");
JTableBinding tableBinding = SwingBindings.createJTableBinding(
UpdateStrategy.READ_WRITE,
sourceBean, valuesProperty,
table);
context.addBinding(tableBinding);
tableBinding.addColumnBinding(BeanProperty.create("firstName"));
tableBinding.addColumnBinding(BeanProperty.create("lastName"));
context.bind();
// add a button which changes the suggestionList
Action next = new AbstractAction("new data") {
public void actionPerformed(ActionEvent e) {
sourceBean.setSuggestionList(createRandomData());
}
};
button.setAction(next);
Резюме: что-то не так с кодом, который вы не показываете;-)
Кстати: подписи получателей / установщиков должны иметь тот же тип, который у вас нет. Не имеет значения в моем тесте, в вашем контексте может указывать или не указывать некоторые нежелательные путаницы