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