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

时间:2011-06-07 10:50:05

标签: java 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));我设法打印出所有的价值。我还需要做些什么才能获得组件的引用吗?

2 个答案:

答案 0 :(得分:1)

  

将JTable列设置为   隐形

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

答案 1 :(得分:1)

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

即使您访问数据的代码也不正确,因为模型和视图可能不同。模型中列的顺序永远不会改变。让我们假设您的表模型可以包含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 );