mxdxm 发表于 2013-2-1 12:53:39

调整JTable的单元格宽度

BWStatTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);      for (int i = 0; i < BWStatTable.getColumnCount(); i++) {            TableColumn tc = BWStatTable.getColumn(BWStatTable.                  getColumnName(i));            int c = tc.getModelIndex();            int width = 0;            int maxw = 0;            for (int r = 0; r < BWStatTable.getRowCount(); ++r) {                TableCellRenderer renderer = BWStatTable.                                             getCellRenderer(r, c); //得到每个单元格的渲染器                Component comp = renderer.getTableCellRendererComponent(                        BWStatTable, "", false, false,                        r, c);                width = comp.getPreferredSize().width;                maxw = width > maxw ? width : maxw;            }            TableCellRenderer headRenderer = tc.getHeaderRenderer(); //得到每列中的表头渲染器            if (headRenderer == null) {                headRenderer = BWStatTable.getTableHeader().         //得到表头中的表头渲染器                               getDefaultRenderer();            }            Component comp = headRenderer.getTableCellRendererComponent(                  BWStatTable, tc.getHeaderValue(), false, false, 0,                  i);            int w = comp.getPreferredSize().width;            maxw = w > maxw ? w : maxw;            if (BWStatTable.getColumnCount() == 2) {                tc.setMinWidth(maxw + 20);                tc.setPreferredWidth(maxw + 160);            }            if (BWStatTable.getColumnCount() == 3) {                tc.setMinWidth(maxw + 20);                //列设置宽度                tc.setPreferredWidth(maxw + 70);            }      } 
页: [1]
查看完整版本: 调整JTable的单元格宽度