Beans绑定NetBeans中的JTable

时间:2009-07-21 22:52:24

标签: java netbeans jtable

我想将一个bean列表映射到JTable。我们的想法是每个列都是bean中的一个预选字段,每一行都是List中的一个bean。这里的幻灯片#32看起来非常有前景:http://swinglabs.org/docs/presentations/2007/DesktopMatters/beans-binding-talk.pdf

但是,NetBeans在让我为列分配bean字段方面不是很友好。我可以右键单击JTable并单击Bind-> Elements并将其绑定到我的Bean列表。但是,它不会让我指定每列中的内容。唯一的选择是自己创建绑定,这几乎使NetBeans对这类事物毫无用处。

我有遗失的细节吗?似乎NetBeans中的JTable BeansBinding刚刚破解。

由于

3 个答案:

答案 0 :(得分:6)

我有它的工作。您无法真正使用JTables的“绑定”菜单选项。以下是如何使其发挥作用:

  1. 右键单击JTable。
  2. 点击“表格内容”。
    1. 绑定来源:表格
    2. 绑定表达式:$ {var}(其中var是bean列表的名称)。
  3. 点击“列”标签。
  4. 将列映射到表达式。它应该看起来像$ {id}而不是$ {var.id}。
  5. 注意:映射到列的每个字段都必须有一个getter。

答案 1 :(得分:4)

尽管将IDE用于此类内容可能很有吸引力,但实际上无法替代自己编写代码。

就个人而言,我更喜欢Glazed Lists来表示表中的bean。花2分钟观看视频,我保证你会被迷住。使用少于15行的代码,您将获得所需的内容,并对显示器进行大量控制 - 加上过滤,排序以及各种其他很酷的东西。

答案 2 :(得分:0)

尝试将列表设为可观察列表。将其初始化更改为以下内容:

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