Sum*_*udu 28 java swing jtable tablecolumn
我需要我的JTable自动重新调整其列宽以适应内容.我发现这个TableColumnAdjuster课非常有用.但是有一个小问题.假设我有5列,其内容非常短.在这种情况下,如果我使用自动调整器,它会根据内容设置前四列宽度,并将所有剩余空间给予最后一列.请看这个例子.

这里是最后一列,Balance给出了所有多余的空间.但是,如果我需要将该空间提供给其中一个中间列,该怎么办呢?在上面的例子中,我需要将该空间分配给第三列,name.我尝试修改TableColumnAdjuster类的adjustColumns()方法.但我无法让它发挥作用.
我尝试了两种方法column.setPreferredWidth()并column.setWidth()改变了色谱柱尺寸.但似乎它没有改变任何东西.如何有效地更改a的列大小JTable.如果还有其他替代方案或直接回答我的主要问题,那就更好了.谢谢!
Pau*_*gas 58
你可以尝试下一个:
public void resizeColumnWidth(JTable table) {
final TableColumnModel columnModel = table.getColumnModel();
for (int column = 0; column < table.getColumnCount(); column++) {
int width = 15; // Min width
for (int row = 0; row < table.getRowCount(); row++) {
TableCellRenderer renderer = table.getCellRenderer(row, column);
Component comp = table.prepareRenderer(renderer, row, column);
width = Math.max(comp.getPreferredSize().width +1 , width);
}
if(width > 300)
width=300;
columnModel.getColumn(column).setPreferredWidth(width);
}
}
Run Code Online (Sandbox Code Playgroud)

这需要在resize方法之前执行.
如果你有:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
Run Code Online (Sandbox Code Playgroud)

没有选项可以自动调整一个大于另一个列的列.
也许你可以这样:
tca = new TableColumnAdjuster( table, 0 );
tca.adjustColumns();
TableColumnModel tcm = table.getColumnModel();
TableColumn tc = tcm.getColumn(1);
tc.setWidth(tc.getWidth() + 25);
Run Code Online (Sandbox Code Playgroud)
这将允许您向第1列添加额外空间.此额外空间仅在第一次显示表时添加.
另一种选择是使用:
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
Run Code Online (Sandbox Code Playgroud)
这将按比例为每列分配额外的空间.
| 归档时间: |
|
| 查看次数: |
73132 次 |
| 最近记录: |