java - 如何在 BorderLayout 的中心使用 JScrollpane

标签 java swing jscrollpane

我有以下代码:

    package example;

    import java.awt.BorderLayout;
    import java.awt.FlowLayout;

    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;

    public class ScrollingExample extends JFrame
    {
        private static final long serialVersionUID = 1L;

        public static void main(String[] args)
        {
            ScrollingExample scrollingExample = new ScrollingExample();
            scrollingExample.go();
        }

        private void go()
        {
            JPanel topPanel = new JPanel();
            topPanel.add(new JLabel("boo"));

            JPanel mainPanel = new JPanel();
            JPanel mainInnerPanel = makeMainInnerPanel();

            JScrollPane scrollPane = new JScrollPane(mainInnerPanel);
            mainPanel.add(scrollPane);
            add(topPanel, BorderLayout.NORTH);
            add(mainPanel, BorderLayout.CENTER);

            pack();
            setVisible(true);
        }

        private JPanel makeMainInnerPanel()
        {
            JPanel row1 = makeHorizontalPanel("one", "two", "three", "four", "five");
            JPanel row2 = makeHorizontalPanel("six", "seven", "eight");
            JPanel row3 = makeHorizontalPanel("nine", "ten", "eleven");
            JPanel mainInnerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            mainInnerPanel.add(row1);
            mainInnerPanel.add(row2);
            mainInnerPanel.add(row3);
            return mainInnerPanel;
        }

        private JPanel makeHorizontalPanel(String ... labelValues)
        {
            JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            for (String s : labelValues)
            {
                JLabel label = new JLabel(s);
                panel.add(label);
            }
            return panel;
        }
    }

当我显示它时,它会自行调整大小以显示所有标签;当我调整窗口大小时,无法显示滚动条。

当我开始工作时,我想制作一个包含 JTabbedPane 和几个按钮的面板,如果用户调整窗口的大小以致无法看到窗口的某些部分,我希望它有滚动条。如果这个问题的答案需要一些额外的或不同的东西来做到这一点,我们将不胜感激。

最佳答案

您需要允许滚动 Pane 随着窗口大小的变化而增长/缩小。

不需要“mainPanel”。

只需使用:

// add(mainPanel, BorderLayout.CENTER);
add(scrollPane, BorderLayout.CENTER);

关于java - 如何在 BorderLayout 的中心使用 JScrollpane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180408/

相关文章:

java - PMD 错误/警告导致构建失败

java - 将 Java 对象转换为整数

java - 插入组件后使 JScrollPane 滚动到底部的正确方法是什么?

java - 在 JDialog 上定位和调整 JScrollBar 的大小

java - 什么是 RMI 注册表

java - Swing 的相对和绝对定位问题

java - 带有 JSTL 的 JSP 不打印变量

java - 使用 swing、JButtons 等在程序上显示信息时出现问题

java - 多个 JSlider - 识别更改

java - 访问包含 JTable 的 JScrollpane