将其他类的方法返回的 JPanel 以一种又一种的方式分配给公共 JPanel 对象时出现问题

发布于 2024-11-16 17:50:13 字数 803 浏览 2 评论 0原文

我正在创建一个设置应用程序。 我有一个初始化应用程序的主类;它有一个 JFrame 和 2 个 JPanel 变量,即 panelX 和 panelY。该主类创建一个 JFrame 并向其中添加 panelX 和 panelY。在这些面板中,panelY 有三个 JButton(即“后退”、“下一步”和“退出”)。 panelY 在整个过程中保持原样。 panelX 在“下一步”和“后退”按钮的单击事件中更改其内容。

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

在我的代码中,当我单击“下一步”按钮以及“后退”按钮时,会发生以下步骤

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

2)panelX被分配为null。

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

前任。

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

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

前任。

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

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

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

谢谢你!

I am creating a setup appplication.
I have a main class which initialize an application; which has a JFrame and 2 JPanel variable namely panelX and panelY. This main class creates a JFrame and add panelX and panelY to it. In these panels panelY has three JButtons (namely Back, Next and Quit). panelY remains as it is during entire process. Where panelX changes its contents as on the click event of Next and Back Button.

I also have some other classes. These classes has a method which returns JPanel having different conponent added to them.

In my code when I click Next Button as well as Back Button following steps occure

1) I calls removeAll() method to remove all the componant of panelX

2) panelX is assinged to null.

3) Call is made to respective method of the above classes and which returns JPanel. This
returned JPanel is assigned to panelX.

Ex.

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

4) After above step; I call repaint(); and validate method on panelX.

Ex.

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

The problem is when I press Next Button Its shows proper panel but when I press Back Button after 2 time clicks on Next button and moves mouse pointer on panelX it shows componants of previous assigned panel as well.

So please tell me friends how I solve this problem.

Thank You!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗喜 2024-11-23 17:50:13

使用CardLayout,如图此处

游戏视图

Use a CardLayout, as shown here.

Game view High Scores view

谢绝鈎搭 2024-11-23 17:50:13

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

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

Don't set panelX to null or reassign the variable to a new JPanel.

Instead, you can reuse the existing panelX by adding components to it after calling removeAll.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文