将其他类的方法返回的JPanel一个接一个地分配给公共JPanel对象的问题

时间:2011-06-24 07:45:07

标签: java jpanel removeall

我正在创建一个安装程序应用程序。 我有一个初级化应用程序的主类;它有一个JFrame和2个JPanel变量,即panelX和panelY。这个主类创建一个JFrame并向其添加panelX和panelY。在这些面板中,面板Y有三个JButton(即Back,Next和Quit)。 panelY在整个过程中保持原样。其中panelX更改其内容,如下一个和后退按钮的单击事件。

我还有其他一些课程。这些类有一个方法,它返回添加了不同conponent的JPanel。

在我的代码中单击“下一步按钮”以及“后退按钮”后面的步骤

1)我调用removeAll()方法删除panelX的所有组件

2)panelX被指定为null。

3)调用上述类的相应方法并返回JPanel。这个 返回的JPanel被分配给panelX。

实施例。

panelX.removeAll();    
panelX=null;    
panelX=getNextPanel();

4)经过上述步骤;我叫repaint();在panelX上验证方法。

实施例

panelX.repaint();
panelX.validate();

问题是当我按下Next Button它显示正确的面板但是当我在按下Next按钮两次后按下Back Button并在panelX上移动鼠标指针时它也会显示先前指定面板的组件。

所以请告诉朋友我是如何解决这个问题的。

谢谢!

2 个答案:

答案 0 :(得分:2)

使用CardLayout,如图here所示。

Game view High Scores view

答案 1 :(得分:0)

不要将panelX设置为null或将变量重新分配给新的JPanel。

相反,您可以在调用panelX后向其添加组件,以重用现有的removeAll