0

我正在创建一个设置应用程序。我有一个初始化应用程序的主类;它有一个 JFrame 和 2 个 JPanel 变量,即 panelX 和 panelY。这个主类创建一个 JFrame 并向其添加 panelX 和 panelY。在这些面板中,panelY 具有三个 JButton(即 Back、Next 和 Quit)。panelY 在整个过程中保持不变。其中 panelX 更改其内容,如 Next 和 Back Button 的单击事件。

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

在我的代码中,当我单击下一步按钮以及后退按钮时,会出现以下步骤

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

2) panelX 被赋值为空。

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

前任。

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

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

前任。

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

问题是当我按下下一个按钮时,它会显示正确的面板,但是当我在两次单击下一个按钮并在 panelX 上移动鼠标指针后按下后退按钮时,它也会显示上一个分配的面板的组件。

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

谢谢你!

4

2 回答 2

2

使用CardLayout ,如此所示。

游戏视图 高分视图

于 2011-06-24T08:24:31.223 回答
0

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

相反,您可以panelX在调用removeAll.

于 2011-06-24T08:03:47.073 回答