Хорошо ли использовать CardLayout для переключения между панелью входа в систему и рабочей панелью? - PullRequest
1 голос
/ 11 апреля 2020

Я учу Свинг. У меня есть JFrame, который JPanel контейнеров - макет CardLayout. Прямо сейчас, когда вы заполняете поля пользователя и пароля, панель переключается и отображается «рабочая».

Я хочу добавить еще одну панель для выбора нескольких параметров, прежде чем перейти на рабочую панель.

CardLayout cl = new CardLayout();
setLayout(cl);
loginPane = new LoginPanel();
devicePane = new DevicePanel();
workingPane = new WorkingPanel();

add(loginPane,"1");
add(devicePane,"2");
add(workingPane, "3");

LoginPanel, DevicePanel и WorkingPanel - все Java классы, которые расширяются JPanel.

Является ли это хорошей практикой, которой нужно следовать, или я должен подумать сделать что-то еще? Потому что я начинаю понимать, что мне нужно создать слушателя из этих панелей, чтобы сообщить кадру, что делать.

1 Ответ

2 голосов
/ 12 апреля 2020

Хорошо ли использовать CardLayout для переключения между панелью входа и рабочей панелью? "

Да. Фактически, если нет смысла включать или более панели в диалоговом окне (JDialog или JOptionPane), CardLayout - это путь к go.

Я начинаю понимать, что мне придется создать слушателя из этих панелей, чтобы сообщить кадру, что делать.

Проблема здесь заключается в расширении компонентов, которые, вероятно, не нужно расширять. Под этим я подразумеваю LoginPanel, DevicePanel & WorkingPanel все они должны быть JPanel экземплярами. Расширяя панель, код, вероятно, содержит инкапсулированные компоненты и прослушиватели, которые должны быть частью одного класса.

Выполнение этого как одного класса устранит проблему, так как все Компоненты и слушатели будут иметь одинаковую область действия (& достижимость).

...