JTable放进JScrollPanel大小怎么设置JTable里面的有些列快太窄了改变大小又不行?用setSize()不起做用时什么原因?

解决方案 »

  1.   

    记得与JScrollPanel无关
    lz主要是想调整列宽度? 可以用以下函数:    /**
         * 自动调整表列宽度
         * @param table 被调整表
         * @param addtionalSpace 额外的宽度
         * @return 总列宽
         */
        public static int fitTableColumnsWidth(JTable table, int addtionalSpace) {
            table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            JTableHeader header = table.getTableHeader();
            int rowCount = table.getRowCount();        Enumeration columns = table.getColumnModel().getColumns();
            int totalColumnWidth = 0;
            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); // this line is very important
                column.setWidth(width + table.getIntercellSpacing().width + addtionalSpace);
                totalColumnWidth += width + table.getIntercellSpacing().width + addtionalSpace;
            }
            return totalColumnWidth;
        }