我有以下场景(2个班级)
第1帧(下一个按钮)
第2帧(上一步按钮,关闭按钮)
Frame1打开(实例1)
去Frame1 - Frame2(frame1.setVisible(false)
和frame2.setVisible(true)
)(实例2)
去Frame2 - Frame1(frame2.setVisible(false)
和frame1.setVisible(true)
)(实例3)
再次Frame1 - Frame2(frame1.setVisible(false)
和frame2.setVisible(true)
)(实例4)
在上面的过程中4个实例(如果程序打开然后记为实例)
现在在从Frame2关闭时,我使用frame1.dispose()
和frame2.dispose()
这里只处理了2次实例
但问题是:仍然没有处理2个实例
但只有一个过程是活着的。怎么可能?
在上面的场景中,我应该处置所有实例来杀死进程吗?
答案 0 :(得分:1)
如果您不想使用CardLayout
在Frame1
中创建一个构造函数,其参数为Frame2
,如下所示,并在本地存储frame2对象。
public class Frame1{
private Frame2 frame2Obj;
public Frame1(Frame2 frame1Obj){
this.frame2Obj = frame2Obj;
}
private openFrame1(){
frame2Obj.setVisible(true);
this.setVisible(false);
}
}
同样在Frame2
中创建一个构造函数,其参数为Frame1
,如下所示,并在本地存储frame1对象。
public class Frame2{
private Frame1 frame1Obj;
public Frame2(Frame1 frame1Obj){
this.frame1Obj = frame1Obj;
}
private openFrame1(){
frame1Obj.setVisible(true);
this.setVisible(false);
}
}
现在你只有两个实例。
答案 1 :(得分:1)
必须为DefautlCloseOperation
JFrame
设置正确值(EXIT_ON_CLOSE)
不要创建第二个或更多JFrames
,而是使用CardLayout