滚动多列还是仅滚动一列都没有关系:基本问题是让水平滚动条开始:-)
有两个螺丝需要调整: - 通过设置表格的 resizeMode 启用水平滚动:默认是始终使表格的大小适合 scrollPane 的大小,即不滚动 - 调整列宽以适合其内容
在映射成伪代码的核心 JTable 中
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// on receiving a TableModelEvent which might increase the column width
// calculate new width by measuring pref of the renderer
int newWidth = ...
// set it as pref of the column
table.getColumnModel().getColumn(0).setPreferredWidth(newWidth);
问题是,如果没有 resizeMode,您始终负责调整列的大小:它的宽度小于 scrollPane,它的尾部有一个空白区域。
JXTable(SwingX 项目的一部分),支持添加大小模式,只要表格的 prefWidts 小于父宽度,就会填充可用的水平空间,并在需要时显示水平滚动条
table.setHorizontalScrollEnabled(true);
// on receiving a TableModelEvent which might increase the column width
// tell the table to re-evaluate
table.packColumn(0);