gpt4 book ai didi

java - 按 [X] 按钮关闭 JFrame 不会调用 dispose 方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:23 25 4
gpt4 key购买 nike

我已经像这样设置了一个 JFrame:

public class XFrame extends JFrame {

public XFrame() {
setSize(100, 100);
}
@Override
public void dispose() {
super.dispose();
System.out.println("Dispose get called");
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

public void run() {
XFrame f = new XFrame();
f.setTitle("Hello World");
//f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
}

我期望的是,当我按下关闭按钮 [X] 时,dispose 方法将被调用。但是,只有当 DISPOSE_ON_CLOSE 设置为 DefaultCloseOperation (???) 时才会出现这种情况。 Java在这里真的让我感到惊讶。如何实现在 DefaultCloseOperation 值(DISPOSE_ON_CLOSE 和 EXIT_ON_CLOSE)两种情况下都会调用的方法?

最佳答案

如果您执行EXIT_ON_CLOSE,则几乎不需要处置,因为无论如何,当 JVM 退出时,所有资源都会“处置”。我将“disposed”放在引号中,因为在这种自动情况下,dispose 方法显然没有被调用。

请注意,Swing 中的公共(public)方法供 调用,并非所有方法都必须由 Swing 的内部调用。例如,有 setSize()setLocation()setBounds() 方法 – 前 2 个调用后者,还是另一个绕开?它没有定义,所以你不应该假设。

类似地,如果你想在框架关闭时做一些事情,确保它的方法是将 WindowListener 挂接到框架,并将你的关闭操作放在 windowClosing() 中

关于java - 按 [X] 按钮关闭 JFrame 不会调用 dispose 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896052/

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