日期:2014-05-20  浏览次数:20769 次

jtable???
我用jtable显示了一个查询窗口,但是有一列如系统时间这一列信息很长,我想加宽jtable中这一列的宽度,怎么做?

------解决方案--------------------
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_XXX);
这个可以设置是否自动宽度

或者

1。// 取得列幅的最大值
private int getPreferredWidthForCloumn(JTable table,int icol){

TableColumnModel tcl = table.getColumnModel();
TableColumn col = tcl.getColumn(icol);
int c = col.getModelIndex(),width = 0,maxw = 0;

for(int r=0;r<table.getRowCount();++r){

TableCellRenderer renderer = table.getCellRenderer(r,c);
Component comp = renderer.getTableCellRendererComponent(table,table.getValueAt(r,c),false,false,r,c);
width = comp.getPreferredSize().width;
maxw = width > maxw?width:maxw;
}

2。自动设定列的宽度

// 设定每列的宽度为当列的最大的宽度。
for(int i= 0; i<table.getColumnCount(); i++){
int with = this.getPreferredWidthForCloumn(table,i) + 10;
with = iniCW[i] > with ? iniCW[i] : with;
table.getColumnModel().getColumn(i).setPreferredWidth(with);
}

其中iniCW[i]是自己设定得一个初始的长度