在Java中,当添加到新的JTable时,JTable中的TableColumns是链接的吗?

在Java中,当添加到新的JTable时,JTable中的TableColumns是链接的吗?,java,swing,jtable,tablecolumn,Java,Swing,Jtable,Tablecolumn,我有几个jtable,每个jtable有几个列。每个表都显示在JTabed窗格中的不同选项卡上。这些列在表中具有相同的标题名称,但列中的值不同。我试图通过右键单击标题并点击compare来允许在所有表之间比较标题。这将打开一个新的JDialog,同时传递具有所选匹配标题的列列表: public void actionPerformed(ActionEvent arg0) { List<TableColumn> columns = new ArrayLi

我有几个jtable,每个jtable有几个列。每个表都显示在JTabed窗格中的不同选项卡上。这些列在表中具有相同的标题名称,但列中的值不同。我试图通过右键单击标题并点击compare来允许在所有表之间比较标题。这将打开一个新的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);
            }
但是,将显示正确的列:

  • 列中的所有数据都丢失
  • 这些列似乎链接到它们来自的表,如下所示 调整一个的大小将调整它来自的表中的列的大小

我在这里遗漏了一些简单的东西吗?

首先,表中的数据由表模型控制,而不是由列模型控制

其次,
TableColumn
有自己的模型(包装在
TableColumnModel
中),对象的更改将通过注册以监视它的所有模型(以及依赖它们的视图)反映出来

您将需要创建一个新的表模型,其中包含每个列的数据行,并映射到相应的列


您应该允许表模型定义列信息,而不是从基础表中“提取”列引用。

首先,表中的数据由表模型控制,而不是由列模型控制

其次,
TableColumn
有自己的模型(包装在
TableColumnModel
中),对象的更改将通过注册以监视它的所有模型(以及依赖它们的视图)反映出来

您将需要创建一个新的表模型,其中包含每个列的数据行,并映射到相应的列


您应该允许表模型定义列信息,而不是从基础表中“提取”列引用。

有两种/三种方法,但我缺少其他重要信息(不包括电池),为了更好地帮助您尽快发布,有两种/三种方法,但我缺少其他重要信息(不含电池),以获得更好的帮助。这很有意义,谢谢。我想我将不得不使用自定义表模型来获取正确列中的值?我不知道如何使用默认表模型,因为所有值都在第一列中。您可以使用默认模型,我个人启动了一个
AbstractTableModel
。基本上,您需要找出将每一列映射到它们应该表示的数据行的方法。非常感谢,我终于使用默认的表模型使其正常工作了:)这很有意义,谢谢。我想我将不得不使用自定义表模型来获得正确列中的值?我不知道如何使用默认表模型,因为所有的值都在第一列中。您可以使用默认模型,我个人启动了一个
AbstractTableModel
。基本上,您需要找出将每一列映射到它们应该表示的数据行的方法。非常感谢,我终于使用默认的表模型使它正常工作了:)
JTable table = new JTable();

for (TableColumn col : passedColumnList) {
            col.setHeaderValue(col.getHeaderValue());
            table.addColumn(col);
        }