将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));我设法打印出所有的价值。我还需要做些什么才能获得组件的引用吗?
答案 0 :(得分:1)
将JTable列设置为 隐形
如果您删除了该列以使其不可见,那么您将获得ArrayIndexOutOfBoundException
。但您可以访问((JTable)comp).getModel().getValueAt(0, j)
答案 1 :(得分:1)
为什么您认为需要隐藏列的单元格编辑器。这听起来像是一个糟糕的设计。
即使您访问数据的代码也不正确,因为模型和视图可能不同。模型中列的顺序永远不会改变。让我们假设您的表模型可以包含3列中的以下数据:“String”,“Integer”,“Date”。现在让我们假设用户通过将“Date”列拖到表的第一列来重新排序表。
现在,当您访问table.getModel()。getValueAt(row,0)时,您将获得“String”值。
当您访问table.getCellEditor(row,0)时,您将获得“Date”对象的编辑器。
要访问给定类类型的默认编辑器,您可以执行以下操作:
Class clazz = table.getModel().getColumnClass(0);
TableCellEditor tce = table.getDefaultEditor( clazz );