博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jtable Auto Resize Column
阅读量:6588 次
发布时间:2019-06-24

本文共 2361 字,大约阅读时间需要 7 分钟。

我们使用Jtable的时候,有的时候内容的文字不能完全显示出来,这时候就需要一个方法能够随着文字和标题的长度伸缩Column的大小。下面的方法只需要把Jtable传入即可自适应,最后的返回值totalColumnWidth指明了每一行所需的width,如果你是使用Box嵌套的Jtable的话,那就可以使用

tableBox.setPreferredSize(new Dimension(totalColumnWidth+20,500));

指定Jtable的宽度。达到很好地美观。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
/**      * resize the column width of Jtable      * @param table      * @return      */     private int resizeColumnWidth(JTable table) {
final TableColumnModel columnModel = table.getColumnModel(); //totalColumnWidth means the Width that Jtable needed. int totalColumnWidth = 0; //each column length should be less than maxDisplayWidth and use maxDisplayWidth when length > maxDisplayWidth int maxDisplayWidth = 1000; //the blankLength that put the sort icon when sort. int blankLength = 20; for (int column = 0; column < table.getColumnCount(); column++) {
int titleWidth = 0; int width = 100; // Min width for (int row = 0; row < table.getRowCount(); row++) {
TableCellRenderer renderer = table.getCellRenderer(row, column); Component comp = table.prepareRenderer(renderer, row, column); width = Math.max(comp.getPreferredSize().width , width); width = width > maxDisplayWidth ? maxDisplayWidth : width; } TableColumn tableColumn = table.getTableHeader().getColumnModel().getColumn(column); TableCellRenderer renderer2 = tableColumn.getHeaderRenderer(); if (renderer2 == null) {
renderer2 = table.getTableHeader().getDefaultRenderer(); } Component comp2 = renderer2.getTableCellRendererComponent(table, tableColumn.getHeaderValue(), false, false, -1, column); titleWidth = comp2.getPreferredSize().width; width = titleWidth > width ? titleWidth + blankLength : width; totalColumnWidth += width; columnModel.getColumn(column).setPreferredWidth(width); } return totalColumnWidth; }

2. 使用

两个for循环里面拿到(row,width)的值进行计算width,与我们设置的maxDisplayWidth进行比较(根据业务不同可以选择删除),TableColumn是为了标题过长,而内容过短的情况,如果内容过短,使用内容得到的width显然会把标题遮住,所以这里加上限制,后面的blankLength是为了点击标题进行排序的时候会出来一个icon而设定的长度。

转载地址:http://ugeno.baihongyu.com/

你可能感兴趣的文章
png图片 透明区域如何 让其不响应鼠标事件?
查看>>
Lua学习笔记(1)
查看>>
BarTender怎么打印公式化的三列标签
查看>>
数据结构顺序字符串
查看>>
《算法导论》读书笔记之第10章 基本数据结构之二叉树
查看>>
C#结构体
查看>>
SVN四部曲之SVN设置详解深入
查看>>
MS-SQL的智能脚本智能提示失效丢失
查看>>
JS回调函数--简单易懂有实例
查看>>
C语言基础:for循环演示源码,字符循环和浮点数循环
查看>>
迈克菲实验室:Flame病毒的深度分析
查看>>
移动互联网初创型团队需要什么样的云计算服务?
查看>>
ssh信任
查看>>
【转载】用备份进行Active Directory的灾难重建:Active Directory系列之三
查看>>
nginx+lua+redis实现post请求接口之黑名单(一)
查看>>
MySQL之MHA架构的介绍
查看>>
MongoDB基本使用
查看>>
使用路由器配置DHCP
查看>>
ad&mysqlslap压力测试
查看>>
saltstack 快速入门
查看>>