在Swing中重用列

时间:2011-05-25 22:01:02

标签: java swing jtable

我正在尝试重构一些摆码。目前有两个独立的JTable,每个都有相同的列,除了第二个列有一个额外的列。我们有很多事件监听器连接到每个表中的每一列用于各种目的。

我想做的是这样的事情:

TableColumn column_1_name = new TableColumn();
TableColumn column_2_name = new TableColumn();
...

column_1_name.code_for_adding_listeners_etc()
column_2_name.code_for_adding_some_other_listeners_etc()
...

TableColumnModel model = new TableColumnModel()
model.add(column_1_name);
model.add...
...

TableModel tableModel = ...

JTable table = new JTable(tableModel, model);

通过命名上面的列,我可以将每个列设置为需要设置的位置,然后使用这些命名列创建JTable。它更干嘛那样。但是,上述方式不起作用!它应该......根据javadoc,但无论出于何种原因,表格都不会显示。

请,任何建议和保持摇摆DRY和利用封装或为什么我的方法将无法工作...它让我疯了。它现在的方式(不是它上面的方式)每个JTable几乎相同,需要大量的重复。

1 个答案:

答案 0 :(得分:-1)

我认为TableColumn对象根本不是要在不同的表之间共享,因此您无论如何都必须复制它们。 (我现在厌倦了查看文档,如果需要可能会在明天这样做。)

但是,您可以共享生成它们的代码:将它放在一个方法中,该方法返回一个新的TableColumnModel,或者接收一个现有的TableColumnModel并将X列添加到它。然后你只需要调用这个方法两次。