动态设置表格列的大小

import java.util.Enumeration;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;


public class Snippet {
 /** 
      * JTable列表自适应宽度 
      * @param 需列表自适应宽度的JTable 
      */ 
 JFrame jf = new JFrame("简单表格");
 JTable table;
 //定义二维数组作为表格数据
 Object[][] tableData =
 {
  new Object[]{"李清照" , 29 , "女"},
  new Object[]{"苏格拉底", 56 , "男"},
  new Object[]{"李白", 35 , "男"},
  new Object[]{"弄玉", 18 , "女"},
  new Object[]{"虎头" , 2 , "男"}
 };
 //定义一维数据作为列标题
 Object[] columnTitle = {"姓名" , "年龄" , "性别"};
 
 
     public void FitTableColumns() {
      
      table = new JTable(tableData , columnTitle);//建立表格
 
         JTableHeader header = table.getTableHeader();  //获得表头对象
 
         int rowCount = table.getRowCount(); //获得表的行数 
  
         Enumeration columns = table.getColumnModel().getColumns(); //获得列对象,枚举类型 
 
         while (columns.hasMoreElements()) {  
 
             TableColumn column = (TableColumn) columns.nextElement();  
 
             int col = header.getColumnModel().getColumnIndex(column.getIdentifier());//获得列数
  
             int width = (int)table.getTableHeader().getDefaultRenderer()  
                     .getTableCellRendererComponent(table, column.getIdentifier(), false, false,  
                             -1, col).getPreferredSize().getWidth(); 
            
             for (int row = 0; row < rowCount; row++) {
              
                 int preferedWidth = (int) table.getCellRenderer(row, col)  
                         .getTableCellRendererComponent(table, table.getValueAt(row, col),  
                                 false, false, row, col).getPreferredSize().getWidth();  
                 width = Math.max(width, preferedWidth);  
             }  
             header.setResizingColumn(column); // 此行很重要  
             column.setWidth(width + table.getIntercellSpacing().width);  
         }
   jf.add(new JScrollPane(table));
   jf.pack();
   jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   jf.setVisible(true);
     }
     public static void main(String args[]){
      new Snippet().FitTableColumns();
     }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值