欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于JTable的列宽与内容自适应的实现方法

程序员文章站 2023-12-17 19:07:16
jtable默认的各列宽度平均,下函数可以实现各列宽度与内容长度适应!复制代码 代码如下:public void fittablecolumns(jtable mytabl...

jtable默认的各列宽度平均,下函数可以实现各列宽度与内容长度适应!

复制代码 代码如下:

public void fittablecolumns(jtable mytable){
  jtableheader header = mytable.gettableheader();
     int rowcount = mytable.getrowcount();

     enumeration columns = mytable.getcolumnmodel().getcolumns();
     while(columns.hasmoreelements()){
         tablecolumn column = (tablecolumn)columns.nextelement();
         int col = header.getcolumnmodel().getcolumnindex(column.getidentifier());
         int width = (int)mytable.gettableheader().getdefaultrenderer()
                 .gettablecellrenderercomponent(mytable, column.getidentifier()
                         , false, false, -1, col).getpreferredsize().getwidth();
         for(int row = 0; row<rowcount; row++){
             int preferedwidth = (int)mytable.getcellrenderer(row, col).gettablecellrenderercomponent(mytable,
               mytable.getvalueat(row, col), false, false, row, col).getpreferredsize().getwidth();
             width = math.max(width, preferedwidth);
         }
         header.setresizingcolumn(column); // 此行很重要
         column.setwidth(width+mytable.getintercellspacing().width);
     }


使用方法:fittablecolumns(yourtablename);

上一篇:

下一篇: