- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码片段中,除非您从代码片段中删除一行代码,否则不会调用 WindowClosing 事件。要删除的代码行是:
jFrame.setUndecorated(true);
显然这个 setUndecorated(true) 方法禁用了 WindowListener/WindowAdapter 功能。这正常吗?
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.HeadlessException;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import org.apache.commons.io.FileUtils;
public class WindowClosing extends JFrame {
private static WindowClosing jFrame;
private static Container contentPane;
public WindowClosing() throws HeadlessException {
super();
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(null, "closing" ,"Cookie", JOptionPane.INFORMATION_MESSAGE);
try {
FileUtils.cleanDirectory(new File("./temp/"));
} catch (IOException e1) {
e1.printStackTrace();
}
e.getWindow().dispose();
System.exit(0);
}
});
}
public static void main(String[] args) {
jFrame = new WindowClosing();
jFrame.setUndecorated(true);
jFrame.pack();
contentPane = jFrame.getContentPane();
contentPane.setLayout(new BorderLayout());
jFrame.setVisible(true);
}
}
最佳答案
关闭框架时未调用WindowListener的原因是:窗口不会通过框架的关闭图标关闭,该图标由jFrame.setUndecorated(true);
禁用。即使系统图标(关闭、最大化、最小化)存在并且用户使用菜单项关闭框架,也不会调用 WindowListener。
关于设置 jFrame.setUndecorated(true) 时不调用 Java WindowClosing 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257529/
import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.UIManager; import javax.sw
在我的 Swing 应用程序中,我希望能够在装饰和未装饰之间切换,而无需重新创建整个框架。但是,API 不允许我在框架可见后调用 setUndecorated()。 即使我调用 setVisible(
我正在构建一个桌面应用程序,需要使用外部 JFrame 来为用户容纳各种绘图工具。 这是我当前的 JFrame 的样子: ![在此处输入图像描述][1] 这是类(class): public clas
在我的应用程序中,通过按钮查看我显示一个jframe(未装饰、MAXIMIZED_BOTH、Visible 和alwaysOnTop),然后经过一段时间后,当我完成它的工作后,我将其从按钮设置为不可见
我有这两个 JFrame,当 setUndecorated 设置为 false 时,它们工作得很好,但当它设置为 true 时,它不能始终如一地工作; frame = new JFrame("
我目前有一个 JDialog,它是通过从我的 JOptionPane 实例调用 createDialog() 方法创建的: JOptionPane pane = new JOptionPane(myP
在下面的代码片段中,除非您从代码片段中删除一行代码,否则不会调用 WindowClosing 事件。要删除的代码行是: jFrame.setUndecorated(true); 显然这个 setUnd
我是一名优秀的程序员,十分优秀!