Может быть, лучше добавить компоненты при инициализации и скрыть их, делая их видимыми при необходимости.
Используйте метод Component.setVisible(boolean b)
, чтобы показать и скрыть компоненты.
Edit:
Я только что попробовал простой тестовый класс, где я добавил случайные компоненты в основной JFrame, и он работал нормально.
Попробуйте позвонить JFrame.pack()
после JPanel.revalidate()
.
Если это не имеет значения, не могли бы вы опубликовать часть своего кода, куда вы добавляете динамические компоненты?
Другое Редактирование:
Сделайте ваш главный компонент Реализуйте интерфейс ComponentListener
и реализуйте метод componentResized(ComponentEvent e)
для вызова JFrame.pack ().