繁体   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