2012-09-13 82 views
0

我有一个JFrame,我用它作为主要的Jabrame,并在相同的JFrame中改变JPanel。第一个JPanel已经在JFrame中,所以我可以用this.removeall()替换this.setContentPane(new JPanel2)“,因为”this“在这里调用JFrame本身。从JPanel内部的JButton替换当前的JPanel而不是JFrame

在另一个JPanel中,我想让一个JButton替换当前的JPanel。问题是我之前不能做同样的代码,因为这里调用JPanel而不是JFrame。

问题是我该如何编写JPanel中的代码,让我能够让JFrame更改它的“setContentPane”来查看第二个面板?


我已经找到了答案,使用CardLayout ..这个视频帮我解决这个问题

CardLayout on Netbeans video

+1

为什么不使用'CardLayo ut'为那组面板? –

+0

@ AndrewThompson-在界面的设计中,我们使用的按钮不是CardLayout或Tabs。我想制作所有的应用面板并在一个JFrame中将它们逐一更改 –

+0

我想编写更改Jpanel中按钮内JPanel的代码,而不是JFrame - @AndrewThompson –

回答

2

我想写的buttonActionListner在JPanel中的代码。我不会写在JFrame中的代码,所以每一个的JPanel可以添加和删除调用另一个独立

@ AndrewThompson,在接口的设计,我们使用的按钮不CardLayout或选项卡。我想让所有的应用程序面板和一个改变他们一个接一个的JFrame

必须调用父(JFrameJPanel),

validate(); // for Java7 revalidate() for JFrame 
repaint(); 

后删除添加新JPanel,只一旦时间和最后一行代码

@AndrewThompson提到的更好,最简单,最simpliest的方法可以是使用CardLayout

+0

好的,但我怎样才能调用当前JPanel的JFrame –

+0

创建JFrame的实例不会为JFrame扩展,但在这种情况下,它看起来像你必须把拿着你想要删除的子面板的父面板,这是使用GUI生成器的税 – mKorbel

+0

谢谢,我用CardLayot和问题解决。 –