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