【发布时间】:2012-10-01 20:38:02
【问题描述】:
我有几个 JTable,每个都有几列。每个表都显示在 JTabbed 窗格中的不同选项卡上。这些列在表中具有相同的标题名称,但在列中具有不同的值。我试图通过右键单击标题并点击比较来允许在所有表中比较标题。这将打开一个新的 JDialog,同时传递一个具有所选匹配标题的列列表:
public void actionPerformed(ActionEvent arg0) {
List<TableColumn> columns = new ArrayList<TableColumn>();
for (int i = 0; i < tables.size(); i++) {
String tableName = tabPane.getTitleAt(i);
JTable tempTable = (JTable) tables.get(tableName);
// Get column at the channel name used
TableColumn col = tempTable.getColumn("chosen header");
// Add the column to the list of channel columns
columns.add(col);
}
new comparisonDialog(UI.getFrame(), "chosen header",
columns);
}
这似乎工作正常,将表的所有公共列存储到传递给新 JDialog 的列表中。当我在新的 JDialog 中显示包含这些列的表格时,它似乎也可以工作:
JTable table = new JTable();
for (TableColumn col : passedColumnList) {
col.setHeaderValue(col.getHeaderValue());
table.addColumn(col);
}
但是会显示正确的列:
- 该列中的所有数据都丢失了
- 这些列似乎链接到它们来自的表,因为 调整一个 调整它来自的表中的列的大小!
我在这里遗漏了一些简单的东西吗?
【问题讨论】:
-
有两种/三种方式,但我错过了其他重要信息(不包括电池),为了获得更好的帮助,请尽快发布SSCCE
标签: java swing jtable tablecolumn