jTable.getColumnModel().getColumn(int num).setWidth(string.length());

解决方案 »

  1.   

    geyf(我在学java) :
      你那个恐怕不行吧,string.length()得到的是字符串字符个数并不是所有字符的宽度和啊
    各位:
      估计新宋体正常5号字型的宽度是多少呢?
      

  2.   

    构造好jtable以后,设置列宽度对于指定列,分别取得表头首选宽度和该列中内容最长的单元格的首选宽度,指定该列宽度为两者中较大者。
    取得表头宽度:取得指定列对象jTable.getColumnModel().getColumn(int num),获取其表头渲染器getHeaderRenderer(),从而获得渲染器代表的首选宽度renderer.getTableCellRendererComponent(...).getPreferredSize().width
    取得指定列中内容最长的单元格的首选宽度:用循环遍历一列中所有单元格,取得其渲染器代表的首选宽度,筛选出最大值,table.getCellrenderer(row, col).getTableCellRendererComponent(table, table.getValueAt(row, col), false, false, row, col).getPreperredSize().width获得理想列宽度后,用geyf(我在学java)的那个方法设置宽度即可。