在StackOverflow上有很多次用户问这样的问题...
我有一个
JPanel
包含一个孩子的主体JPanel
。当用户单击按钮时,孩子JPanel
应更改为另一个JPanel
。我该如何做到这一点。
通常,用户实际上曾尝试实现此问题,但无法使其正常工作。
每当我回答这个问题时,我都会告诉他们做这样的事情(简单地说)...
JPanel myFrame = new JPanel();
myFrame.remove(oldPanel);
myFrame.add(newPanel);
我认为这是一个很合理的答案,而且我个人在许多自己的Java项目中都使用了它,没有问题。但是,我总是不满意我的回答,每个人都只是说“使用CardLayout
”。
所以我的问题是,为什么每个人都对它如此着迷CardLayout
,以至于我的答案值得一票?为什么我应该选择使用CardLayout
上面的代码而不是添加/删除面板?
另一个问题是,您是否仍建议CardLayout
使用动态JPanels的接口。例如,我的大多数程序都实现了一个自定义插件框架,其中可能有数百个JPanels
,但是我仅按实际需要加载和显示面板。对于程序的正常使用,绝不会实际加载或要求使用大多数面板。对于这种情况,我的编码方法是否会是最好的解决方案,因为据我了解,即使绝大部分都不会使用,我CardLayout
还是需要实际创建所有这些JPanels
方法?
next()
和prev()
方法。Map<String, Component>
,因为它已经为您服务。我并没有经常使用枚举。repaint()
和revalidate()
交换组件时。但是我无法解释投票否决的原因,除非他们不高兴,否则您没有提到需要记住调用repaint()
和revalidate()
交换组件时的需要。您将不得不询问投票否决者是否足够勇敢做出回应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句