@Stalder

Java, Swing. Почему не появляются остальные компоненты?

Когда в цикле добавляю много элементов, отображаются лишь какое-то количество первых, остальные просто игнорируются, и при каждой компиляции число нарисованных разное. Почему так происходит? Как бороться?
public GUI(String windowName, ArrayList<String> pupilList) { //конструктор класса унаследованного от JFrame

        super(windowName);                              
        setVisible(true);                               
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                                                       
        setLayout(null);
        setSize(640, 480);                             
        setResizable(false);                            
        setLocationRelativeTo(null);                   
        setLayout(null);

        this.pupilList = new ArrayList<>();

        for (int i = 0; i < pupilList.size(); i++) {
            this.pupilList.add(new JLabel(pupilList.get(i)));
            this.pupilList.get(i).setBounds(10, 10 + 20*i, 200, 15);
            add(this.pupilList.get(i));
        }
        ...
    }
  • Вопрос задан
  • 683 просмотра
Решения вопроса 1
@zelan
Кратко обо мне не получится.
setVisible(true);

Переставь как можно дальше, желательно в самый-самый конец. Компоненты могут не успеть отрисоваться. Помню такое часто было когда писал на свинге, и тоже при каждом запуске отрисовывалось разное количество компонентов. Либо попробуй обновить/перерисовать окно. Но там хитрыми методами надо его перерисовывать, к сожалению не вспомню, возможно frame.update(...) даже хватит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы