【发布时间】:2017-11-29 05:55:39
【问题描述】:
我正在创建一个窗口,我需要通过仅单击按钮来关闭它。
为此,我正在使用
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE) 方法。
但问题是当我单击 command + q 时,我的 Mac 正在关闭该窗口。
这是一个代码:
package screen.saver;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;
public class ScreenSaver {
public static void main(final String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFrame screenSaverFrame = new JFrame();
screenSaverFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
screenSaverFrame.setUndecorated(true);
screenSaverFrame.setResizable(false);
JButton closeWindow = new JButton("Close window");
closeWindow.addActionListener(e -> {
screenSaverFrame.dispose();
});
screenSaverFrame.add(closeWindow, BorderLayout.CENTER);
screenSaverFrame.validate();
GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.setFullScreenWindow(screenSaverFrame);
}
}
【问题讨论】:
-
“但问题是我的 Mac 在我单击 command + q 时正在关闭该窗口” - 是的,它就是这样工作的,CMD+Q 正在终止进程跨度>
-
但是我不知道用command + q 来关闭它。我只想通过按钮关闭它
-
为什么?你的用户对你做了什么?
-
我只想每 30 分钟锁定一次屏幕以便休息一下。
-
我建议查看 `Application.getApplication().setQuitStrategy(QuitStrategy.CLOSE_ALL_WINDOWS);` 和
Application.getApplication().disableSuddenTermination();- 更多详情请参阅 this example