Как принудительно обновить / перекрасить JScrollPane?

Я добавляю множество компонентов (JPanels, JLabels и т. Д.) В JScrollPane программно в начале моей программы, основываясь на некоторых материалах из базы данных.

Кажется, что эта процедура слишком быстрая для графического интерфейса (?), Поэтому JScrollPane не всегда корректно обновляется, то есть полосы прокрутки не видны, даже если внутренняя JPanel больше видимой области.

Изменение размера окна (JFrame) устраняет проблему, так как я предполагаю, что Java перепечатывает компоненты при изменении их размера.

В качестве теста я добавил кнопку отладки, которую можно нажимать после завершения запуска программы. Я пытаюсь заставить JScrollPane «обновить» себя.

Я пытался сделать:

scrollpane.repaint();
scrollpane.validate();
scrollpane.revalidate();

Ни один из них, кажется, не работает. Однако, если я изменю границу (или любой другой макет, связанный с JScrollPane), он обновится правильно.

scrollpane.setBorder(new LineBorder(Color.RED));

Итак, у меня есть два вопроса.

Что такое команда для принудительного обновления полосы прокрутки? Очевидно, что я делаю что-то вроде «перекрашивания», когда я добавляю границу. Как я могу запустить это только?

Есть ли способ «приостановить» печать компонентов по мере их добавления и возобновить ее после добавления всех нужных компонентов? Как и сейчас, я в основном «вижу» компоненты, добавляемые на экран (хотя это действительно быстро). Было бы лучше, если бы я мог добавить все нужные мне компоненты и ТОГДА сказать программе распечатать его на экране / JFrame.

Ответы на вопрос(2)

Ваш ответ на вопрос