Jtable 保留列宽



我有一个Jtable,我正在使用setDataVector函数设置数据。它工作正常,但假设如果我只是通过使用鼠标拖动来更改一些列宽,然后在同一个表中加载新数据后,该列的宽度将重置为其默认位置。所以基本上我想保留这个宽度,即使加载新数据。

当您使用 setDataVector() 方法时,表的结构可能会更改,因此表会自动重新创建 TableColumnModel,并且您将丢失自定义项。

首次创建 JTable 时,请使用如下代码:

JTable table = new JTable(...);
table.setAutoCreateColumnsFromModel( false );

以防止重新创建表列模型。

发生这种情况是因为当您根据重新创建列的文档使用setDataVector()并且列宽更改为默认值时。

尝试使用setAutoCreateColumnsFromModel()来防止这种行为。

当您使用自定义表模型时。不要使用 setDateVector() 它会重新创建列。您可以使用 setPreferredWidth() 方法手动管理列的宽度,如下所示:

      table.setModel(buildTableModel(rs));
      TableColumnModel tcm = table.getColumnModel();
      tcm.getColumn(0).setPreferredWidth(80);  
      tcm.getColumn(1).setPreferredWidth(200);  
      tcm.getColumn(2).setPreferredWidth(100);  
      tcm.getColumn(3).setPreferredWidth(100);  
      tcm.getColumn(4).setPreferredWidth(100);  

相关内容

  • 没有找到相关文章

最新更新