В StackOverflow много раз было, когда пользователь задавал подобный вопрос...
У меня есть основная
JPanel
, которая содержит дочерний элементJPanel
. Когда пользователь нажимает на , дочерняя панельJPanel
должна измениться на другую панельJPanel
. Как я могу добиться этого.
Чаще всего пользователь пытался реализовать эту проблему, но не мог заставить ее работать.
Всякий раз, когда я отвечаю на этот вопрос, я говорю им сделать что-то вроде этого (просто говоря)...
JPanel myFrame = new JPanel();
myFrame.remove(oldPanel);
myFrame.add(newPanel);
Я считаю это вполне законным ответом, и лично я без проблем использовал его во многих своих Java-проектах. Тем не менее, я всегда получаю отрицательные голоса за свой ответ, и все просто говорят: «Используйте CardLayout
».
Итак, мой вопрос: почему все так увлечены CardLayout
, что мой ответ заслуживает отрицательных голосов? Почему я должен использовать CardLayout
, а не добавлять/удалять панели с помощью моего кода выше?
В качестве дополнительного вопроса, вы по-прежнему предлагаете CardLayout
для интерфейсов с динамическими панелями JPanel. Например, большинство моих программ реализуют пользовательский фреймворк плагинов, в котором может быть много сотен JPanel
, но я загружаю и отображаю панели только тогда, когда они действительно необходимы. При нормальном использовании программы большинство панелей никогда не загружались бы и не требовались. Будет ли мой подход к написанию кода лучшим решением для такого типа сценария, поскольку я понимаю, что CardLayout
потребует от меня фактического создания всех JPanel
, хотя большинство из них никогда не будет использоваться?