为什么水平滚动条永远不会出现在JTable上?

时间:2015-08-04 18:27:02

标签: java swing jtable jscrollpane

因为一张图片胜过千言万语:

JTable when Horizontal ScrollBar is not needed JTable when Horizontal ScrollBar is needed

我在JScrollPane中有JTable,目前该表有10列。每列都有一个最小宽度(由setMinWidth(...)给出)。

第一张图片:当JFrame拉伸超过所有列的所有最小宽度的总和时,则拉伸列以填充窗口:这是所需的效果(不要空框架最右边的空间。)

第二张图片但是,当JFrame设置为小于此组合最小尺寸的尺寸时,水平条不会正确显示,并且无法查看最右侧的列。目前我有JScrollPane.HORIZONTAL_SCROLLBAR_​​ALWAYS作为水平条选项hince为什么两个图片的水平条形容器(适当的名称?)都在那里,但实际的条形本身从不显示。如果我有JScrollPane.HORIZONTAL_SCROLLBAR_​​OFF,则水平条形容器永远不会显示。

垂直工作正常。

我尝试了很多东西,包括禁用自动调整大小并尝试在JScrollPane宽度超过列的最小宽度总和时自己设置列宽。我自己必须手动执行此操作似乎不对。我可以在必要时提供我的代码,但我不认为这是必要的,因为它只是一个托管JTable的JScrollPane。

1 个答案:

答案 0 :(得分:1)

解决方案是覆盖getScrollableTracksViewportWidth()方法:

@Override
public boolean getScrollableTracksViewportWidth() {
  return (getPreferredSize().width < getParent().getWidth());
}