2013-02-23 5 views
0

Я создаю программу, которая в настоящее время имеет 3 класса. К ним относятся класс JFrame в дополнение к двум другим классам JPanel. Кто-нибудь знает, как я могу сделать JButton в одном классе JPanel, удалить этот конкретный JPanel и добавить JFrame в новый JPanel (из другого класса)?Наличие JButton открывает новый JPanel

Например, допустим, что класс JFrame называется фреймом, а два класса JPanel называются panel1 и panel2. Если нажать кнопку на панели 1, как вы скажете кадру удалить панель 1 и добавить панель2?

+5

Используйте «CardLayout» для изменения панелей, как показано в [этом ответе] (http://stackoverflow.com/a/5786005/418556). –

+4

Для примера [http://stackoverflow.com/a/5655843/230513). – trashgod

ответ

1

Ну, это зависит от того, что вы имеете в виду под словом «удалить».

Хорошим подходом будет использование MigLayout с использованием свойства hidemode. Исходное состояние вашей формы будет содержать обе панели в JFrame, но вторая панель будет невидимой.

Когда вы нажмете кнопку первого JPanel, она установит видимость этой панели на значение false, а видимость второй панели - true.

С другой стороны, если вы хотите полностью удалить из рамки первую панель, укажите ей имя, используя метод panel.setName (panelName), а затем извлеките каждый подкомпонент JFrame и поместите их в сборнике.

Затем повторите эту коллекцию и проверьте имя каждого компонента.

Если компонент.getName(). Равен (имя_панели), то используйте метод frame.remove (component), чтобы избавиться от него. После этого возможно, что вам нужно вызвать подтверждение и перерисовку в вашем фрейме, хотя я не уверен, что это необходимо. Просто попробуйте:)