a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 183|回复: 0

[其他] JAVA技巧:如何调整JTable的单元格宽度

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
1.BWStatTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);- c2 Q& I, ~. C, t- x. C0 F' ]; r
    2.        for (int i = 0; i < BWStatTable.getColumnCount(); i++) {# f% _1 t# P2 q+ E, Q% O9 ^4 p# a; O
    3.            TableColumn tc = BWStatTable.getColumn(BWStatTable.; _4 x8 C' n; i5 N0 f
    4.                    getColumnName(i));( K: e+ T$ y* ~  }
    5.            int c = tc.getModelIndex();2 J1 a! f: p) K. M
    6.            int width = 0;
9 q5 E/ P* o0 M$ ]. o2 K    7.            int maxw = 0;
% O( K5 Y# x" d! E- t    8.            for (int r = 0; r < BWStatTable.getRowCount(); ++r) {
, h7 n% ^6 _0 e  ~- I7 d    9.                TableCellRenderer renderer = BWStatTable.
; ?2 n: e$ c) t( _, o    10.                                             getCellRenderer(r, c); //得到每个单元格的渲染器$ y5 r% p2 I" F; K7 f5 l1 e  M
    11.                Component comp = renderer.getTableCellRendererComponent(; w5 a- N1 S4 y1 \& Q1 C3 Y; }
    12.                        BWStatTable, "", false, false,$ t- R. p- a, L7 L2 {- D0 `
    13.                        r, c);8 A. N3 t) b8 Z) T1 `9 e% ^
    14.                width = comp.getPreferredSize().width;
- ]+ ]+ e; d: v6 r    15.                maxw = width > maxw ? width : maxw;
* r+ t" B* A# j; l- q    16.            }; U* C$ }' l0 b2 V/ s- h
    17.            TableCellRenderer headRenderer = tc.getHeaderRenderer(); //得到每列中的表头渲染器
& {( u2 [! ~$ O5 h5 s( U1 I  d    18.            if (headRenderer == null) {
" r5 ^8 I4 v: x" Y. @0 A    19.                headRenderer = BWStatTable.getTableHeader().         //得到表头中的表头渲染器
3 H; A. R; _0 I    20.                               getDefaultRenderer();
0 d1 G# f* P# T7 S  L2 s% D8 M4 b    21.            }% ^0 S( R+ B- D
    22.            Component comp = headRenderer.getTableCellRendererComponent(
0 m3 W) Z6 M/ l  q) _& Q/ @$ A1 ?    23.                    BWStatTable, tc.getHeaderValue(), false, false, 0,; [7 q$ F, V% Y/ x* w) T
    24.                    i);& N7 i& q0 `7 b
    25.            int w = comp.getPreferredSize().width;
) x8 s$ _) r. S) C) @    26.            maxw = w > maxw ? w : maxw;
% B$ r$ B' B: M6 F    27.            if (BWStatTable.getColumnCount() == 2) {" y# u% [3 o, @( N
    28.                tc.setMinWidth(maxw + 20);
/ b1 n5 q# E" q/ M    29.                tc.setPreferredWidth(maxw + 160);+ C% T5 i4 h7 k7 s% v  ?
    30.            }
* d7 |* K, j3 ?  Z    31.            if (BWStatTable.getColumnCount() == 3) {
! ]( c3 G0 g; U! e, U    32.                tc.setMinWidth(maxw + 20);                //列设置宽度+ P( {& d. [0 O- M/ ?
    33.                tc.setPreferredWidth(maxw + 70);
: D: T8 j6 Q+ D' f* m; v8 d' M    34.            }$ Z! |& G; ~  L
    35.        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 06:44 , Processed in 0.170853 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表