![](/img/trans.png)
[英]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.