- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 StackOverflow 上已经有很多次用户提出这样的问题......
I have a main
JPanel
that contains a childJPanel
. When the user clicks a button, the childJPanel
should change to a differentJPanel
. How can I achieve this.
很多时候,用户实际上已经尝试实现这个问题,但无法让它工作。
每当我回答这个问题时,我都会告诉他们做这样的事情(简单地说)......
JPanel myFrame = new JPanel();
myFrame.remove(oldPanel);
myFrame.add(newPanel);
我认为这是一个相当合理的答案,而且我个人已经在我自己的许多 Java 项目中毫无问题地使用了它。但是,我的回答总是遭到反对,每个人都只是说“使用 CardLayout
”。
所以我的问题是,为什么每个人都对 CardLayout
如此着迷,以至于我的回答值得投反对票?为什么我应该选择使用 CardLayout
而不是使用上面的代码添加/删除面板?
作为进一步的问题,您是否仍会为具有动态 JPanel 的界面建议 CardLayout
。例如,我的大多数程序都实现了一个自定义插件框架,其中可能有数百个 JPanels
,但我只在实际需要时加载和显示面板。对于程序的正常使用,绝大部分面板实际上不会被加载或需要。对于这种情况,我的编码方法是否是最好的解决方案,据我所知,CardLayout
将要求我实际创建所有 JPanel
,即使大多数永远不会用过吗?
最佳答案
next()
和 prev()
方法。Map<String, Component>
为此目的,因为它已经为您准备好了。为此,我经常使用枚举。repaint()
和 revalidate()
交换组件时。关于java - CardLayout 与手动添加/删除 JPanel 有什么特别之处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694584/
我已经可以在其中输入一些附加文本了mydomain/wiki/Special:UserLogin。我添加了一句话: In order to apply for an account send an m
有人可以解释以下脚本输出背后的逻辑吗? import numpy if(numpy.dtype(numpy.float64) == None): print "Surprise!!!!" 谢谢
是我还是 gmail bulls**t?在 outlook/浏览器上,我的电子邮件是完美的,但在 gmail 上,2 个表之间有一个空间,为什么?!?图片:http://i.imgur.com/srJ
我是一名优秀的程序员,十分优秀!