[英]Java swing JTable doesn't show scroll bar when using JScrollPane
[英]Horizontal scroll bar doesn't work when I add jtable on jscrollpane
我在JScrollPane上有一个JTable。 我希望那个桌子占据整个滚动。 所以我添加了这个: table.setAutoResizeMode(JTable.AUTO_RESIZE_All_Columns);
当只有几列时,它会很好地工作。 但是,当有很多列时,它看起来像这样:
如您所见,列太窄。 我尝试为所有列添加此代码: table.getColumnModel().getColumn(1).setMinWidth(75);
有用。 然后我将此代码添加到JScrollPane中: setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
但是水平滚动条不起作用:
您可以看到它,但是不起作用。 我知道我可以用以下代码解决所有问题:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
但是在这种情况下,我的表没有占据整个滚动。 因此,当列数很少时,我希望这些列扩展滚动的整个宽度,并且当列数很多时,我希望这些列不缩小到小于某个值。 我想要一个水平滚动条。 有可能这样做吗?
抱歉,这是一个愚蠢的问题。 我可以用这段代码来做所有我想做的事情:
if (getColumnModel().getColumnCount() > 13)
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
else
setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
但是,如果有人想出更优雅的解决方案,请显示它。 这对我真的很有帮助。
重复。
您可以在这里找到 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);
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.