JTable的列宽与内容的自适应及JXL转EXCEL自适应列宽
1.要想实现JTable宽度自适应,必须首先调用setAutoResizeMode方法,将JTable的自适应模适修改为JTable.AUTO_RESIZE_OFF,默认为JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS。在设置此方法前,需要先比较如果表格当前的实际大小并没有达到父容器的宽度,则将其设置为AUTO_RESIZE_SUBSEQUENT_COLUMNS
1.要想实现JTable宽度自适应,必须首先调用setAutoResizeMode方法,将JTable的自适应模适修改为JTable.AUTO_RESIZE_OFF,默认为JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS。
在设置此方法前,需要先比较如果表格当前的实际大小并没有达到父容器的宽度,则将其设置为AUTO_RESIZE_SUBSEQUENT_COLUMNS使表格充满父容器,这样更好看些。如果超过了父容器的宽度,则设置为JTable.AUTO_RESIZE_OFF,用自已实际计算的宽度进行设置。因些,在这儿需要比较表格的实际大小与父容器的实际大小再进行设置。
2.宽度自适应需要考虑到表头和表格列数据的实际宽度,对每一列的实际宽度做比较,包括表头,取其中最大值,并设置其值为比较后的最大值。注意,需要调用table().getColumnModel().getColumn(j).setPreferredWidth(max)而不是setWidth方法。
3.一般我们在程序使用过程中都会把JTable加到一个JScrollPane中,以便使JTable实现滚动功能。因此,当我们要达到自适应时,将表格自适应属性设置为JTable.AUTO_RESIZE_OFF后,需要为父容器填加ComponentListener,并实现componentResized方法,在该方法中对表格的宽度进行自适应设置。
4.具体代码如下:
此方法用于设置jtable的列宽与显示内容自适应
public static void fitTableColumns(JTable myTable)
Object value = myTable.getValueAt(row, col);
Component c = myTable.getCellRenderer(row,col).getTableCellRendererComp
JXL导出EXCEL:如何自动调整列宽
byte[] bstrLength = rs.getString(j).getBytes(); //中文字符算两个字节
sheet.setColumnView(j-1, bstrLength.length+2);
更多推荐
所有评论(0)