设置不可见后无法访问Jtable列数据

将JTable列设置为不可见后,我无法获得对该组件的引用。

Component cellEditor; String name; String value; // loop row then column for(int j=0 ; j<tolCol ; j++){ /* get cell name in JTable */ System.out.println(j + " " + ((JTable)comp).getModel().getValueAt(0, j)); tce = ((JTable)comp).getCellEditor(0, j); // <-- ArrayIndexOutOfBounds } 

当我使用System.out.println(j +“”+((JTable)comp).getModel()。getValueAt(0,j)); 我设法打印出所有的价值。 我还需要做些什么来获得组件的引用吗?

将JTable列设置为不可见后

如果您已删除列以使其不可见 ,那么您将获得ArrayIndexOutOfBoundException 。 但你可以访问((JTable)comp).getModel().getValueAt(0, j)

为什么您认为需要隐藏列的单元格编辑器。 这听起来像是一个糟糕的设计。

即使您访问数据的代码也不正确,因为模型和视图可能不同。 模型中列的顺序永远不会改变。 让我们假设您的表模型可以包含3列中的以下数据:“String”,“I​​nteger”,“Date”。 现在让我们假设用户通过将“Date”列拖到表的第一列来重新排序表。

现在,当您访问table.getModel()。getValueAt(row,0)时,您将获得“String”值。

当您访问table.getCellEditor(row,0)时,您将获得“Date”对象的编辑器。

要访问给定类类型的默认编辑器,您可以执行以下操作:

 Class clazz = table.getModel().getColumnClass(0); TableCellEditor tce = table.getDefaultEditor( clazz );