import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
import java.awt.*;public class SetTableWidth extends JFrame
{
public SetTableWidth()
{
Container conta=this.getContentPane();
JScrollPane jsp=new JScrollPane();
JTable jt=new JTable(4,4);
jsp.getViewport().setLayout(new BorderLayout());
jsp.getViewport().add(jt,BorderLayout.CENTER); 
conta.setLayout(new BorderLayout());
conta.add(jsp,BorderLayout.CENTER);
Enumeration columns = jt.getColumnModel().getColumns();
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
         while (columns.hasMoreElements()) 
         {
             TableColumn tc = (TableColumn)columns.nextElement();
             tc.setPreferredWidth(50);
             tc.setMinWidth(50);
             tc.setMaxWidth(50);
         }
         this.setSize(400,500);
         this.setVisible(true);

}
public static void main(String args[])
{
new SetTableWidth();
}
}

解决方案 »

  1.   

    TableColumnModel tcm = tableModel.getColumnModel();
        int[] widths = {95,105,95,125,125,110,125};//各列列宽设定
        for(i=0;i<widths1.length;i++) {
          TableColumn tc = tcm.getColumn(i);
          tc.setPreferredWidth(widths[i]);
        }
    上面例子是共有7列,各列长度设置,其实在真实显示的时候,是按widths里面各数据比例分配列宽的。