我有几个 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);
}
但是会显示正确的列:
- 列中的所有数据都丢失了
- 这些列似乎链接到它们来自的表,因为调整一个大小会调整它来自的表中的列的大小!
我在这里错过了一些简单的东西吗?