jTable bebbinding - PullRequest
       15

jTable bebbinding

0 голосов
/ 30 сентября 2011

Я вставляю данные из util.List в JTable с beansbinding. Я обернул ArrayList в список ObservableList и Observable, привязанный к uitl.List. Я связал данные в Netbeans и настроил свойства в «Table Content» в Netbeans «Параметры привязки JTable». В первый раз, когда список обновляется, 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 Ответ

2 голосов
/ 30 сентября 2011

Только что проверил: он работает как положено (ручное кодирование, конечно, не затронет 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);

резюме: что-то не так с кодом, который вы не показываете; -)

Кстати: подписи получателей / установщиков должны иметь тот же тип, который у вас нет. Не имеет значения в моем тесте, в вашем контексте может указывать или не указывать некоторые нежелательные путаницы

...