加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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 );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读