因为一张图片胜过千言万语:
我在JScrollPane中有JTable,目前该表有10列。每列都有一个最小宽度(由setMinWidth(...)给出)。
第一张图片:当JFrame拉伸超过所有列的所有最小宽度的总和时,则拉伸列以填充窗口:这是所需的效果(不要空框架最右边的空间。)
第二张图片但是,当JFrame设置为小于此组合最小尺寸的尺寸时,水平条不会正确显示,并且无法查看最右侧的列。目前我有JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS作为水平条选项hince为什么两个图片的水平条形容器(适当的名称?)都在那里,但实际的条形本身从不显示。如果我有JScrollPane.HORIZONTAL_SCROLLBAR_OFF,则水平条形容器永远不会显示。
垂直工作正常。
我尝试了很多东西,包括禁用自动调整大小并尝试在JScrollPane宽度超过列的最小宽度总和时自己设置列宽。我自己必须手动执行此操作似乎不对。我可以在必要时提供我的代码,但我不认为这是必要的,因为它只是一个托管JTable的JScrollPane。
答案 0 :(得分:1)
解决方案是覆盖getScrollableTracksViewportWidth()方法:
@Override
public boolean getScrollableTracksViewportWidth() {
return (getPreferredSize().width < getParent().getWidth());
}