3

我想将一个 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 似乎刚刚损坏。

谢谢

4

3 回答 3

6

我有它的工作。您不能真正使用 JTables 的“绑定”菜单选项。以下是如何让它工作:

  1. 右键单击 JTable。
  2. 单击“表格内容”。
    1. 绑定源:表单
    2. 绑定表达式:${var}(其中 var 是 bean 列表的名称)。
  3. 单击“列”选项卡。
  4. 将列映射到表达式。它应该看起来像 ${id} 而不是 ${var.id}。

注意:映射到列的每个字段都必须有一个 getter。

于 2009-07-22T19:26:16.220 回答
4

尽管将 IDE 用于这类东西可能很吸引人,但实际上没有什么可以替代自己编写代码。

就个人而言,我更喜欢Glazed Lists在表格中展示 bean。花 2 分钟观看视频,我保证你会被迷住。只需不到 15 行代码,您就可以得到您想要的东西,并且可以对显示进行大量控制 - 加上过滤、排序和各种其他很酷的东西,当您准备好使用它时。

于 2009-07-22T03:07:37.960 回答
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);
}
于 2010-02-07T19:30:31.587 回答