gpt4 book ai didi

java - 只关闭 JFrame 的单个实例?

转载 作者:行者123 更新时间:2023-12-01 12:29:23 24 4
gpt4 key购买 nike

所以我有两个类,MainMakeUserWindow,在我的Main类中我调用了MakeUserWindow几个使用循环使用不同参数的时间。唯一的问题是,这会创建几个相互重叠的窗口(这没什么大不了的,只是我可以在彼此之上得到 20 个窗口)。我想做的只是在调用实例之前使用 window.dispose(); ,但是,当我这样做时,它会关闭窗口的所有实例。不允许我使用相同的变量重新创建实例。有没有一种方法可以仅关闭我不知道的像 window.close(); 这样的单个实例,或者是否有更好的方法来做到这一点?在来这里之前我已经搜索了一段时间,但没有任何结果。

作为引用,这是我正在做的事情的简化版本

(MakeUserWindow是一个扩展JFrame的类)

MakeUserWindow newWindow;

for(stuff){

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

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

感谢您的阅读,-扎克。

最佳答案

我已经测试过它,这就是我得到的:

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

或多或少像你的代码。只有最后一帧幸存下来,因为当您执行“.dispose()”时,您正在关闭其他帧。您可以做的是一个保留所有实例的 Map。

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

关于java - 只关闭 JFrame 的单个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26066576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com