当我在 jscrollpane 上添加 jtable 时,水平滚动条不起作用
Horizontal scroll bar doesn't work when I add jtable on jscrollpane
我在 JScrollPane 上有一个 JTable。我希望 table 占据整个卷轴。所以我添加了这个:table.setAutoResizeMode(JTable.AUTO_RESIZE_All_Columns);
当只有几列时效果很好。但是当有很多列时它看起来像
that:
如您所见,列太窄了。我尝试为所有列添加此代码:table.getColumnModel().getColumn(1).setMinWidth(75);
它有效。我将这段代码添加到 JScrollPane: setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
但是水平滚动条
doesn't work:
你可以看到它,但它不起作用。我知道我可以用这段代码解决我所有的问题:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
但在这种情况下,我的 table 并没有占据整个卷轴。所以,我希望当只有几列时,列扩展到滚动的整个宽度,并且当有很多列时,我希望列不会缩小到小于某个值。我想要一个水平滚动条。可以吗?
抱歉,这是一个愚蠢的问题。我可以用这段代码做我想做的一切:
if (getColumnModel().getColumnCount() > 13)
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
else
setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
但如果有人知道更优雅的解决方案,请展示它。这对我真的很有帮助。
重复。
您可以 find here 2 个优雅的解决方案。
其中之一是:
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);
}
}
});
我在 JScrollPane 上有一个 JTable。我希望 table 占据整个卷轴。所以我添加了这个:table.setAutoResizeMode(JTable.AUTO_RESIZE_All_Columns);
当只有几列时效果很好。但是当有很多列时它看起来像
that:
如您所见,列太窄了。我尝试为所有列添加此代码:table.getColumnModel().getColumn(1).setMinWidth(75);
它有效。我将这段代码添加到 JScrollPane: setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
但是水平滚动条
doesn't work:
你可以看到它,但它不起作用。我知道我可以用这段代码解决我所有的问题:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
但在这种情况下,我的 table 并没有占据整个卷轴。所以,我希望当只有几列时,列扩展到滚动的整个宽度,并且当有很多列时,我希望列不会缩小到小于某个值。我想要一个水平滚动条。可以吗?
抱歉,这是一个愚蠢的问题。我可以用这段代码做我想做的一切:
if (getColumnModel().getColumnCount() > 13)
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
else
setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
但如果有人知道更优雅的解决方案,请展示它。这对我真的很有帮助。
重复。
您可以 find here 2 个优雅的解决方案。
其中之一是:
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);
}
}
});