问题是这样的:
当JTable显示的时候不能完整的显示内容! 如:要要显示书名这列时书名
java程序设计...而我需要的是完全的显示内容,列的宽度应该根据内容的大小进行调整.
正确的显示方式为:书名
java程序设计语言教程请高人帮忙指点一下!! 小人初学 在此先谢过!

解决方案 »

  1.   

    原理就是在这个列上,从第1行遍历到最后一行,找出最宽的那个单元格的宽度,这个宽度就是这个列的宽度,下面是大致的代码:
            简单说明table变量为JTable的实例,
            //col为表格中列的索引号,以3为例 
            int col = 3;//书名列
            int width = 0;
            int maxwidth = 0;
            for (int row = 0; row < table.getRowCount(); row++)
            {
                TableCellRenderer renderer = table.getCellRenderer(row, col);
                Component comp = renderer.getTableCellRendererComponent(table(),
                    table().getValueAt(row, col), false, false, row, col);
                width = comp.getPreferredSize().width;
                maxwidth = width > maxwidth ? width : maxwidth;
            }
            //得到了最大的宽度,然后设置这列的宽度
            TableColumn tc = null;
            tc = table().getColumn(3);
            tc.setPreferredWidth(maxwidth);
      

  2.   

    代码只是片断,主要是说明原理,把每个单元的绘制器先取出,然后取得组件的宽度,就是单元格的宽度。        for (int row = 0; row < table.getRowCount(); row++)
            {
                TableCellRenderer renderer = table.getCellRenderer(row, col);
                Component comp = renderer.getTableCellRendererComponent(table,
                    table.getValueAt(row, col), false, false, row, col);
                width = comp.getPreferredSize().width;
                maxwidth = width > maxwidth ? width : maxwidth;
            }