簡體   English   中英

JScrollPane僅顯示垂直條,水平顯示三個點

[英]JScrollPane show only vertical bar and three dot for horizontal

我只想為面板添加垂直滾動條。 我可以成功完成此操作,但在水平視圖中長文本沒有出現點。 我想同時看到垂直滾動條和不適合屏幕的長文本的三個點。 我該怎么做? 順便說一句,如果我將面板直接添加到出現的框架點上。

帶有滾動窗格

在此處輸入圖片說明

將面板直接添加到框架時

在此處輸入圖片說明

public class ScrollPaneDemo {

    public static void main(String[] args) {
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        for (int i = 0; i < 25; i++) {
            panel.add(createLabel());
        }

        JScrollPane scrollPane = new JScrollPane(panel);
        scrollPane
                .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

        JFrame frame = new JFrame();
        frame.getContentPane().add(scrollPane);
        frame.setSize(300, 300);

        frame.setVisible(true);
    }

    public static JLabel createLabel() {
        return new JLabel(
                "Long Text, Long Text, Long Text, Long Text, Long Text, Long Text, Long Text, Long Text, Long Text");
    }

}

這肯定是一個壞主意,但是如果您要的就是這里,那就是。 修改面板以將其getPreferredSize覆蓋為其默認高度,但將其父級的寬度覆蓋為默認值:

JPanel panel = new JPanel() {

    @Override
    public Dimension getPreferredSize() {

        int h = super.getPreferredSize().height;
        int w = getParent().getSize().width;
        return new Dimension(w, h);
    }
};

父類是JViewport ,它是滾動窗格中組件的“瀏覽窗口”。

現在行

scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

什么都不做,因為可以保證面板的寬度就是視口的寬度,這意味着您無處滾動,默認情況下不會顯示滾動條。 查看剩余文本的唯一方法是通過調整框架的大小來調整滾動窗格的大小。

如果有任何問題,我不會感到驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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