0

我将 util.List 中的数据插入到带有 beansbinding 的 JTable 中。我已将 ArrayList 包装到 ObservableList 和 Observable 列表中,并分配给 uitl.List。我在 Netbeans 中绑定数据并在 Netbeans 'JTable Beanbinding 中的'Table Content'中设置属性选项'。第一次更新列表时,JTable也更新了,没关系。但是第二次当我将另一个转换为 Observable 列表的 util.List 设置为绑定到 JTable 的列表时,列表已更新,但 JTable 未更新。(但是当我设置列表时,System.out。 pr .. 打印列表的正确值,在这里我将 util.List 更改为 ObservableList,反之亦然以找到问题所在,但没有我预期的结果)(但是当我将对象添加到绑定到 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();
    }
}
4

1 回答 1

2

刚刚检查:它按预期工作(当然是手动编码,不会触及 Netbeans ), sourceBean 具有属性SuggestionList的类;

    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);

摘要:您未显示的代码有问题;-)

顺便说一句:getter/setter 签名应该具有相同的类型,而你的则没有。对我的测试没有影响,在您的上下文中可能会或可能不会表示一些不需要的混淆

于 2011-09-30T08:37:11.423 回答