//can set column widths using percentages
private void setPreferredTableColumnWidths(JTable table, double[] percentages)
{
Dimension tableDim = table.getSize();
double total = 0;
for(int i = 0; i < table.getColumnModel().getColumnCount(); i++)
total += percentages[i];
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(int i = 0; i < table.getColumnModel().getColumnCount(); i++)
{
TableColumn column = table.getColumnModel().getColumn(i);
column.setPreferredWidth((int) (tableDim.width * (percentages[i] / total)));
}
}
我希望能够根据表格总宽度的百分比更改JTable的宽度。上面的代码看起来应该可以工作,但是当我使用“setPreferredTableColumnWidths(table,new double [] {。01,.4,.2,.2,.2})”调用它时,我只获得相等宽度的列;“< / p>
可能是什么问题?
答案 0 :(得分:1)
您的代码工作正常,但根据您调用它的位置,表格可能有也可能没有宽度。在Panel的构造函数(或包含表的任何内容)中,还没有宽度。
我在paint()方法中调用了你的方法。但一定要保持跟踪并只调用一次,否则它会反复调整列的大小。
@Override
public void paint(Graphics g) {
super.paint(g);
if(! this.initialSizeSet){
this.setPreferredTableColumnWidths(this.table, new double[] {0.1, 0.1, 0.5, 0.3});
this.initialSizeSet = true;
}
}
答案 1 :(得分:0)
尝试添加以下行:
table.doLayout();
方法结束时。