1

我有以下场景(2个班级)

Frame1(next button)
Frame2(prev button, close button)
Frame1 打开(instance 1)
to go Frame1 - Frame2 ( frame1.setVisible(false)and frame2.setVisible(true)) (instance 2)
to go Frame2 - Frame1 ( frame2.setVisible(false)and frame1.setVisible(true)) (instance 3)
Frame1 - Frame2 ( frame1.setVisible(false)and frame2.setVisible(true)) (实例 4)

在上述过程中的 4 个实例(如果程序打开然后记为实例)
现在在从 Frame2 关闭期间,我正在使用frame1.dispose()frame2.dispose()
这里只处理了 2 次实例。
但问题是:仍然没有处理 2 个实例。
但只有一个进程是活着的。这怎么可能?
在上述情况下,我应该处理所有实例以终止进程吗?

4

2 回答 2

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);
    }
}

现在您将只有两个实例。

于 2013-02-07T11:33:17.603 回答
1
于 2013-02-07T11:34:21.113 回答