在 StackOverflow 上有很多次用户问这样的问题......
我有一个
JPanel
包含 child的 mainJPanel
。当用户单击一个按钮时,孩子JPanel
应该更改为不同的JPanel
. 我怎样才能做到这一点。
很多时候,用户实际上已经尝试过实现这个问题,但不能让它工作。
每当我回答这个问题时,我都会告诉他们做这样的事情(简单地说)......
JPanel myFrame = new JPanel();
myFrame.remove(oldPanel);
myFrame.add(newPanel);
我认为这是一个相当合理的答案,而且我个人在我自己的许多 Java 项目中都使用过它,没有任何问题。但是,我的回答总是遭到反对,每个人都只是说“使用 a CardLayout
”。
所以我的问题是,为什么每个人都如此着迷CardLayout
,以至于我的回答值得一票否决?为什么我应该选择使用 aCardLayout
而不是使用上面的代码添加/删除面板?
作为另一个问题,您是否仍然建议CardLayout
使用具有动态 JPanel 的接口。例如,我的大多数程序都实现了一个自定义插件框架,其中可能有数百个JPanels
,但我只加载和显示实际需要的面板。对于程序的正常使用,大多数面板实际上永远不会被加载或需要。对于这种类型的场景,我的编码方法会是最好的解决方案吗?据我所知,CardLayout
这需要我实际创建所有的,JPanels
即使大多数永远不会被使用?