java – 添加新列时CellRenderer和Editor重置
发布时间:2020-12-15 08:45:39 所属栏目:Java 来源:网络整理
导读:我有一个表格,我的列动态扩展.最初我将我的表模型设置为5列,因为基本信息有5列.在5列中,第2列和第3列是按钮(实际上它们是按钮形式的超链接),这意味着我已将第2列和第3列设置为拥有自己的渲染器和编辑器. table.getColumnModel().getColumn(2).setCellRender(
我有一个表格,我的列动态扩展.最初我将我的表模型设置为5列,因为基本信息有5列.在5列中,第2列和第3列是按钮(实际上它们是按钮形式的超链接),这意味着我已将第2列和第3列设置为拥有自己的渲染器和编辑器.
table.getColumnModel().getColumn(2).setCellRender(new MyCellRender()); table.getColumnModel().getColumn(2).setCellEditor(new MyCellEditor(table)); //more code for column 3 initializatation 我的问题是有时候一行可能有超过5个列,所以每次我需要在模型中添加更多列时,我会通过添加新列来检查它.我用 model.addColumn("ColumnName"); 添加新列.问题是每次我添加的行都比初始行大,我的渲染器和第2列和第3列上的编辑器都被重置/删除并呈现为默认值.我需要什么才能保留第2列和第3列. BTW第2列和第3列是唯一始终呈现为按钮的列. 解决方法
要最初创建表,您可以使用:
JTable table = new JTable(model); table.setAutoCreateColumnsFromModel( false ); table.getColumnModel().getColumn(2).setCellRender(new MyCellRender()); table.getColumnModel().getColumn(2).setCellEditor(new MyCellEditor(table)); 将自动创建TableColumnModel和TableColumns. 现在,如果要添加另一列,因为TableColumns不是从模型自动创建的,所以您不会丢失自定义渲染器/编辑器,但现在需要手动创建TableColumns: String columnName = "Column X"; model.addColumn( columnName ); // AutoCreate is turned off so create table column here TableColumn column = new TableColumn( table.getColumnCount() ); column.setHeaderValue( columnNamer ); table.addColumn( column ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |