只关闭一个JFrame实例?

时间:2014-09-26 19:01:47

标签: java swing jframe

所以我在我的Main类中有两个类MakeUserWindowMain,我通过循环使用不同的参数多次调用MakeUserWindow。唯一的问题是,这会创建几个彼此重叠的窗口(这不是一个很大的交易,它只是我可以在彼此之上获得20个窗口)。我想做的只是在调用实例之前使用window.dispose();,但是,当我这样做时,它会关闭窗口的所有实例。不允许我使用相同的变量重新创建实例。有没有办法只关闭我不知道的window.close();这样的单个实例,或者我有更好的方法吗?我来之前已经搜索了一段时间,没有任何结果有帮助。

供参考,以下是我正在做的简化版

(MakeUserWindow是一个扩展JFrame的类)

MakeUserWindow newWindow;

for(stuff){

    newWindow.dispose();
    newWindow = new MakeUserWindow("parameters here");
}

EDIT --- 我在循环之外初始化MakeUserWindow的原因是因为我需要使用newWindow的属性。

感谢您阅读,-Zach。

1 个答案:

答案 0 :(得分:1)

我测试了它,这就是我得到的:

    JFrame frame = new JFrame();
    for (int i = 0; i < 5 ; i++) {
        frame.dispose();
        frame = new JFrame();
    }

或多或少喜欢你的代码。当你执行“.dispose()”时,只有最后一帧存活,因为你正在关闭其他帧。您可以做的是保存所有实例的地图。

    Map<String, JFrame> frames = new HashMap<String, JFrame>();
    JFrame frame = new JFrame();
    for (int i = 0; i < 5 ; i++) {
        frame = new JFrame();
        frames.put("Window" + i,frame);
    }

如果你想关闭一个框架,你可以:

frames.get("WindowX").dispose();