TableColumn.setPreferredWidth(int width)

解决方案 »

  1.   

    得到JTable的TableModel,用TableModel类可以设置列的最大、 最小、最优宽度
    即setMinWidth()、setMaxWidth()和setPreferredWidth()方法,方法的参数为int型
      

  2.   

     private void saveColumnWidth()
        {
            int n = columnNames.length;
            for (int i = 0; i <n;i++)
            {
                TableColumn tcl = jTable1.getColumn(columnNames[i]);
                columnWidth[i] =tcl.getWidth();
            }
        }    private void loadColumnWidth()
        {
            int n = columnNames.length;
            for (int i = 0; i <n;i++)
            {
                TableColumn tcl = jTable1.getColumn(columnNames[i]);
                tcl.setWidth(columnWidth[i]);
                jTable1.sizeColumnsToFit(i);
            }
        }
      

  3.   

    粗看简单的问题其实颇不好回答.
    我到现在还尚存疑问. 
    setPreferedWidth()没有效果.如果你设定一列的宽度可以:
        TableColumn tcl = table.getColumn(columnName);   
        tcl.setMinWidth(100);
        tcl.setMaxWidth(100);
        table.sizeColumnsToFit(0);  // 一定要加上,是Swing的bug如果要能拉动
        TableColumn tcl = table.getColumn(columnName);   
        tcl.setMinWidth(100);
        tcl.setMaxWidth(maxwidth);
        table.sizeColumnsToFit(0);
    这时候tcl.getWidth返回是100.,为什么是100我也不知道//preferedWidth为什么没有起作用,我不知道