将其他类的方法返回的 JPanel 以一种又一种的方式分配给公共 JPanel 对象时出现问题
我正在创建一个设置应用程序。 我有一个初始化应用程序的主类;它有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用CardLayout,如图此处。
Use a CardLayout, as shown here.
不要将
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 callingremoveAll
.