发布于 2016-04-07 14:18:47
如https://dzone.com/articles/taking-new-swing-tree-table-a-中所引用的这里所示,RowModel的实现必须从getColumnClass()返回正确的类型,从getValueFor()返回正确的值。类型Boolean.class的值将使用JCheckBox呈现。以下实现产生所引用的图像:

@Override
public Class getColumnClass(int column) {
switch (column) {
case 0:
return Date.class;
case 1:
return Long.class;
case 2:
return Boolean.class;
case 3:
return Boolean.class;
case 4:
return Boolean.class;
default:
assert false;
}
return null;
}
@Override
public Object getValueFor(Object node, int column) {
File f = (File) node;
switch (column) {
case 0:
return new Date(f.lastModified());
case 1:
return f.length();
case 2:
return f.canRead();
case 3:
return f.canWrite();
case 4:
return f.canExecute();
default:
assert false;
}
return null;
}我无法选择复选框。
您需要在实现所需列的true中返回isCellEditable(),并相应地更新setValueFor()实现中的node。当单元格编辑器结束时,您的setValueFor()实现将被调用,因此请验证它是否更新了getValueFor()稍后将返回的相同值。或者,您希望使用TreeModel API中规定的方案来实现管理TreeModelListener列表的EventListenerList方法;DefaultTreeModel源代码就是一个很好的例子。
https://stackoverflow.com/questions/36471989
复制相似问题