JScrollPane и позиционирование - Java

Узнай цену своей работы

Формулировка задачи:

Всем привет. Первый пост, уровень Java: чайник. Пишу софтину, которая должна в окошке выдать список из 88-ми лейблов и 88-ми пар радиокнопок. Пока настраиваю позиционирование только на лейблах. Возникла проблема.
Container container = new Container();
        container = getContentPane();
        JPanel panel = new JPanel(new FlowLayout());
        container.add(panel);
 
        for (int i = 0; i < leongard.numberOfQuestions; i++)
        {
            q[i] = new JLabel();
            q[i].setText(leongard.questions[i]);
            panel.add(q[i]);
        }
Такой код даёт мне окно, в котором эти лейблы расположены в столбик и ведут себя довольно-таки нормально, по правилам FlowLayout - переносят слова, если не умещаются в окно, меняют конфигурацию при ресайзе и всё такое. Однако, стоит мне добавить прокрутку - всё летит к чёрту. Вот код:
Container container = new Container();
        container = getContentPane();
        JPanel panel = new JPanel(new FlowLayout());
        container.add(panel);

        JScrollPane scr = new JScrollPane(panel,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); //НОВАЯ СТРОЧКА В КОДЕ
        container.add(scr); //НОВАЯ СТРОЧКА В КОДЕ

        for (int i = 0; i < leongard.numberOfQuestions; i++)
        {
            q[i] = new JLabel();
            q[i].setText(leongard.questions[i]);
            panel.add(q[i]);
 
        }
При исполнении этого кода, появляется полоса прокрутки, но все лейблы расположены в строчку. Начало первого лейбла привязано к верхнему левому углу окна, двигается вместе с ним. Я знаю, что я где-то что-то не сказал, но у меня самого варианты кончились. Я смотрел другие типы позиционирования, даже боксы, но везде не то. Подскажите, пожалуйста, как заставить это дело располагаться в столбик?

Решение задачи: «JScrollPane и позиционирование»

textual
Листинг программы
GridLayout gl = new GridLayout(0,1);
        JPanel panel = new JPanel(gl);
        container.add(panel);
        JScrollPane scr = new JScrollPane(panel,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        container.add(scr);

ИИ поможет Вам:


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

Оцени полезность:

10   голосов , оценка 4.4 из 5