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

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

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

Всем привет. Первый пост, уровень Java: чайник. Пишу софтину, которая должна в окошке выдать список из 88-ми лейблов и 88-ми пар радиокнопок. Пока настраиваю позиционирование только на лейблах. Возникла проблема.
Листинг программы
  1. Container container = new Container();
  2. container = getContentPane();
  3. JPanel panel = new JPanel(new FlowLayout());
  4. container.add(panel);
  5. for (int i = 0; i < leongard.numberOfQuestions; i++)
  6. {
  7. q[i] = new JLabel();
  8. q[i].setText(leongard.questions[i]);
  9. panel.add(q[i]);
  10. }
Такой код даёт мне окно, в котором эти лейблы расположены в столбик и ведут себя довольно-таки нормально, по правилам FlowLayout - переносят слова, если не умещаются в окно, меняют конфигурацию при ресайзе и всё такое. Однако, стоит мне добавить прокрутку - всё летит к чёрту. Вот код:
Листинг программы
  1. Container container = new Container();
  2. container = getContentPane();
  3. JPanel panel = new JPanel(new FlowLayout());
  4. container.add(panel);
  5.  
  6. JScrollPane scr = new JScrollPane(panel,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); //НОВАЯ СТРОЧКА В КОДЕ
  7. container.add(scr); //НОВАЯ СТРОЧКА В КОДЕ
  8.  
  9. for (int i = 0; i < leongard.numberOfQuestions; i++)
  10. {
  11. q[i] = new JLabel();
  12. q[i].setText(leongard.questions[i]);
  13. panel.add(q[i]);
  14. }
При исполнении этого кода, появляется полоса прокрутки, но все лейблы расположены в строчку. Начало первого лейбла привязано к верхнему левому углу окна, двигается вместе с ним. Я знаю, что я где-то что-то не сказал, но у меня самого варианты кончились. Я смотрел другие типы позиционирования, даже боксы, но везде не то. Подскажите, пожалуйста, как заставить это дело располагаться в столбик?

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут