Java 水平滚动条不显示';在jscrollpane上添加jtable时无法工作

Java 水平滚动条不显示';在jscrollpane上添加jtable时无法工作,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,我在JScrollPane上有一个JTable。我要那张桌子占满整个卷轴。所以我添加了:table.setAutoResizeMode(JTable.AUTO_RESIZE_All_Columns)当只有几列时,它工作得很好。但是当有很多列时,它看起来像 正如你所看到的,柱子太窄了。我尝试为所有列添加此代码:table.getColumnModel().getColumn(1.setMinWidth(75)它可以工作。我向JScrollPane添加了以下代码:setHorizontalScro

我在JScrollPane上有一个JTable。我要那张桌子占满整个卷轴。所以我添加了:
table.setAutoResizeMode(JTable.AUTO_RESIZE_All_Columns)当只有几列时,它工作得很好。但是当有很多列时,它看起来像

正如你所看到的,柱子太窄了。我尝试为所有列添加此代码:
table.getColumnModel().getColumn(1.setMinWidth(75)它可以工作。我向JScrollPane添加了以下代码:
setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL\uScrollBar\uAlways)但水平滚动条

你可以看到它,但它不起作用。我知道我可以用这个代码解决我的所有问题:

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
if (getColumnModel().getColumnCount() > 13)
    setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
else
    setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
但在这种情况下,我的表格并没有占据整个卷轴。所以,当只有几列时,我希望列扩展到滚动的整个宽度,当有很多列时,我希望列不缩小到小于某个值。我想要一个水平滚动条。有可能吗

对不起,这是个愚蠢的问题。我可以用这段代码做我想做的一切:

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
if (getColumnModel().getColumnCount() > 13)
    setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
else
    setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
但如果有人有更优雅的解决方案,请展示出来。这对我真的很有帮助。

重复。
您可以选择两种优雅的解决方案。
其中之一是:

jTable.getParent().addComponentListener(new ComponentAdapter() {
    @Override
    public void componentResized(final ComponentEvent e) {
        if (jTable.getPrefer1sredSize().width < jTable.getParent().getWidth()) {
            jTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        } else {
            jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        }
    }
});
jTable.getParent().addComponentListener(新的ComponentAdapter()){
@凌驾
公共无效组件已恢复(最终组件事件e){
if(jTable.getPrefer1sredSize().width
非常感谢!真的很好!但现在我有另一个问题。在我的JTable实现中,我重写了方法prepareRenderer,因为我想让列对内容进行拉伸。而且效果很好。但现在由于以下代码,它无法工作:jTable.setAutoResizeMode(jTable.AUTO_RESIZE_OFF);有可能解决这个问题吗?@Аааааааааааааааааааа107。下面是我关于代码的问题: