2009-07-21 97 views
3

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

但是,NetBeans在让我将bean字段分配给列方面并不是非常友好。我可以右键单击JTable并单击绑定 - >元素并将其绑定到我的List的List。但是,它不会让我指定每列中的内容。唯一的选择是自己创建绑定,这使得NetBeans几乎无用于这种类型的事情。

有没有我错过的细节?看起来,NetBeans中的JTable BeansBinding刚刚破裂。

感谢

回答

6

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

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

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

4

作为吸引力,因为它可能是使用IDE这一类东西,没什么只是自己的编码是不可替代的。

就个人而言,我更喜欢Glazed Lists用于在表格中显示bean。花2分钟观看视频,我保证你会被吸引。只需少于15行的代码,您就可以获得所需的内容,并且可以对显示屏进行大量的控制 - 加上筛选,排序以及各种其他酷炫的东西,当您准备好时。

+0

你提到这项技术很有趣。我正在认真考虑使用它。我有点担心为我们的项目添加另一个依赖项,所以我希望beanbinding是我们需要的。你有没有注意到Glazed Lists比beansbinding更多的好处? – User1 2009-07-22 14:59:24

+0

哦耶 - 列表绑定/处理比BB(我喜欢BB,但只适用于常规属性绑定)。 GL值得依赖(这是一个很棒的库)。对锁语义和自动EDT调度的支持是使用GL的充分理由 - 但是您可以添加所有其他您可以执行的奇妙事情(筛选,动态列表转换),并且这是一个非常容易的选择。 – 2009-07-23 15:35:01

0

尝试使列表成为可观察的列表。将其初始化更改为如下所示:

list1 = ObservableCollections.observableList(new ArrayList<Person>()); 

然后很多员工应该开始工作。如果您绑定到一个bean,然后确保你火你想要绑定的属性的设定方法的属性更改事件添加以下代码

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