JScrollPanel, горизонтальная и вертикальная прокрутка не работает - PullRequest
0 голосов
/ 17 марта 2019

У меня есть следующий код:

public class MyScroll extends JFrame {

    public MyScroll() {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();

        panel.setLayout(null);

        for (int i = 0; i < 10; i++) {
            JButton b = new JButton("Hello-" + i);
            b.setBounds(0, i * 50, 100, 45);
            panel.add(b);

            b.setLayout(null);
        }

        JScrollPane scrollPane = new JScrollPane(panel);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setBounds(50, 30, 100, 325);

        JPanel contentPane = new JPanel(null);
        contentPane.setPreferredSize(new Dimension(500, 400));
        contentPane.setBackground(Color.BLUE);
        contentPane.add(scrollPane);

        contentPane.setLayout(null);

        setContentPane(contentPane);
        pack();
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
    }
}

И это делает это:

enter image description here

Как видите, вертикальная и горизонтальная прокрутка не работают, но оба они определены и отображаются внутри JPanel.

Может кто-нибудь объяснить мне, что я делаю не так?

Этот код основан на этом: Прокрутка JPanel Но в данный момент не работает вертикальная прокрутка

1 Ответ

0 голосов
/ 17 марта 2019

Может кто-нибудь объяснить мне, что я делаю не так?

panel.setLayout(null);

Не использовать нулевую раскладку.

Полосы прокрутки будут появляться автоматически только тогда, когдапредпочтительный размер компонента, добавляемого в область прокрутки, больше, чем размер области прокрутки.

Задачей менеджера макета является определение предпочтительного размера панели.Поскольку вы не используете менеджер макетов, предпочтительный размер не рассчитывается.

Поэтому решение состоит в том, чтобы использовать Менеджер макетов .Может быть вертикальный BoxLayout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...