Java 为什么水平滚动条从未出现在JTable上?

Java 为什么水平滚动条从未出现在JTable上?,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,既然一幅画抵得上千言万语: 我在JScrollPane中有JTable,目前该表有10列。每列都有一个最小宽度(由setMinWidth(…)给出) 第一张图片:当JFrame被拉伸超过所有列的所有最小宽度之和时,列被拉伸以填充窗口:这是所需的效果(不希望在帧的最右侧出现空白) 第二张图片:但是,当JFrame设置为小于此组合最小尺寸时,水平条不会正确显示,并且无法查看最右侧的列。目前我有JScrollPane.HORIZONTAL\u SCROLLBAR\u始终作为水平条选项,这说明为什么

既然一幅画抵得上千言万语:

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

第一张图片:当JFrame被拉伸超过所有列的所有最小宽度之和时,列被拉伸以填充窗口:这是所需的效果(不希望在帧的最右侧出现空白)

第二张图片:但是,当JFrame设置为小于此组合最小尺寸时,水平条不会正确显示,并且无法查看最右侧的列。目前我有JScrollPane.HORIZONTAL\u SCROLLBAR\u始终作为水平条选项,这说明为什么两张图片都有水平条容器(合适的名称?),但实际的水平条本身从未显示。如果我关闭了JScrollPane.HORIZONTAL\u SCROLLBAR\u,则水平条容器永远不会显示

垂直工程很好


我尝试过很多方法,包括禁用自动调整大小,以及在JScrollPane宽度超过列的最小宽度和时尝试自己设置列宽。我必须自己手动操作,这似乎是不对的。如果需要,我可以提供我的代码,但我认为没有必要,因为它只是一个承载JTable的JScrollPane。

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

@覆盖
公共布尔值getScrollableTracksViewportWidth(){
返回(getPreferredSize().width
嘿,你看过这篇文章了吗<代码>因为一张图片抵得上千言万语:-实际上,代码抵得上千言万语,而不是一张图片。每一个问题都应该贴上一个适当的标签。图片并没有给我们任何关于代码实际执行的指示。
@Override
public boolean getScrollableTracksViewportWidth() {
  return (getPreferredSize().width < getParent().getWidth());
}