簡體   English   中英

當我在jscrollpane上添加jtable時,水平滾動條不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM