gpt4 book ai didi

java - 如何使用 JFrame 关闭被调用的类而不关闭调用它的类?

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:46 25 4
gpt4 key购买 nike

我似乎有一个相当独特的问题,我在这里搜索了一段时间但没有找到答案。我有一个类,它有一个带有两个按钮的简单 JFrame。每个按钮都会调用不同类的 Main 方法,如下所示:

checkRuling = new JButton("Check Your Deck's Rulings");
checkRuling.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
ReadHtmlCardDatabase.main(null);
}
});

一个调用一个类,该类将一系列输入放入文本字​​段并根据输入创建格式化的 html 文档,另一个将 html 文档加载到 JEditorPane 中。我的问题是,当我关闭子类的 JFrame 之一(输入或 html 加载器之一)时,它完全退出我的程序,而我想保持主类(带有两个按钮)打开。我尝试过使用:

close = new JButton("CLOSE");
close.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
System.exit(1);
}
});

在子类中的按钮上,无济于事。单击该按钮后,它会退出所有内容。我也尝试过使用:

JFrame.DISPOSE_ON_EXIT

对于子类,但这会导致 JFrame 在子类没有实际关闭的情况下消失,因此第一个保存 html 文档的子类实际上从未保存它,而打开同一 html 文档的第二个子类将不起作用,因为它没有保存。任何帮助将不胜感激,因为我不知道如何做到这一点。

最佳答案

正如 Fast Snail 在评论中所说,您不应该调用 main 方法。实例化一个执行每个功能的类。开始使用时使用 setVisible(true) 将框架设置为可见,然后在使用完毕后使用 setVisible(false) 将其设置为可见。因此,在 Action 监听器中,只需更改可见性即可。

然后,假设您没有发生任何过于疯狂的事情,您刚刚设置为不可见的框架应该超出范围并被释放,这样内存就不会被耗尽。每次需要时,只需实例化 ReadHtmlCardDatabase 类的一个新副本即可。或者,您可以拥有一份静态副本,根据需要将其设置为可见/不可见。

关于java - 如何使用 JFrame 关闭被调用的类而不关闭调用它的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710749/

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