Удаление JPanel внутри JPanel ... внутри JPanel - PullRequest
2 голосов
/ 06 декабря 2011

Я пытаюсь создать в Java приложение, похожее на слайд-шоу, используя NetBeans.

У меня есть JFrame (главное окно), и внутри него есть две кнопки (назад и далее) для навигации и JPanel (mainPanel), который действует как держатель «слайдов» приложения. Я также использую пользовательские объекты JPanel (SlidePanel), которые затем помещаются внутри mainPanel. Некоторые из этих SlidePanel объектов имеют внутри JPanels.

Теперь я смог поместить эти SlidePanel объекты в mainPanel и также перемещаться по ним (например, если я нажму следующую кнопку, SlidePanel 1 будет заменен на SlidePanel 2, или если я нажму кнопку «назад», SlidePanel 2 будет заменен на SlidePanel 1.) Я сделал это, используя методы removeAll(), revalidate() и repaint().

Проблема начинается здесь. Третий SlidePanel объект содержит JPanel внутри него. Что происходит, когда вы добираетесь до третьего SlidePanel, все работает нормально. Но оттуда, если вы нажмете кнопку «назад» (которая возвращает вас к SlidePanel 2), JPanel из SlidePanel 3 останется на экране, а компоненты внутри SlidePanel 2 отрегулированы так, чтобы соответствовать mainPanel.

Что мне сделать, чтобы это исправить?

РЕДАКТИРОВАТЬ: Большое спасибо всем, кто ответил. Я попробовал CardLayout на фиктивном проекте, и он работал нормально. Теперь все, что мне нужно сделать, это добавить его к исходному. Еще раз спасибо. :)

Ответы [ 2 ]

5 голосов
/ 06 декабря 2011

Я предлагаю вам использовать другой менеджер раскладки (например, CardLayout); пусть менеджер компоновки беспокоится о манипулировании его компонентами.

5 голосов
/ 06 декабря 2011

Я предлагаю использовать CardLayout для этого вместо добавления и удаления JPanels на примере Runtime для CardLayout и вместе с вашей идеей может быть здесь

...