- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个游戏,我试图拦截关闭事件并将用户返回到主菜单。我已经使用 DO_NOTHING_ON_CLOSE
解决了一半问题,但问题是我无法将常规功能返回到菜单屏幕。
您可能知道,问题是,如果 DO_NOTHING...
是操作,则 windowClosing
方法显然是最后一个触发的监听器。
所以,我的问题是,NOTHING
完成后, 如何将 EXIT_ON_CLOSE
返回到窗口?在此期间,我想在没有任何用户输入的情况下进行。我可以切换到另一个 JFrame 并从那里处理它,但必须有更好的方法来完成它。
代码示例:
WindowAdapter waReturnToMenu = new WindowAdapter() {
@Override
public void windowClosing(final WindowEvent e) {
view.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
changeMenuState(0);
}
};
然后,在改变菜单状态:
public void changeMenuState(int i0) {
//...screen returns to menu, then
view.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
最佳答案
为什么不在您的 WindowListener 中包含此逻辑,因为它会在尝试关闭时调用?您的代码设置 boolean 变量的状态,以告知 WindowListener 您是希望它让用户返回程序还是关闭程序。在 WindowListener 中,您将检查此 boolean 变量的状态,如果状态是某个值,则通过 System.exit(...)
退出程序。
(做成答案)
例如,
// class field
private boolean canClose = false;
//....
WindowAdapter waReturnToMenu = new WindowAdapter() {
@Override
public void windowClosing(final WindowEvent e) {
if (canClose) {
System.exit(0);
} else {
changeMenuState(0);
}
}
};
然后,在改变菜单状态:
public void changeMenuState(int i0) {
//...screen returns to menu, then
canClose = true;
}
关于Java - 如何 DO_NOTHING_ON_CLOSE,然后启用 EXIT_ON_CLOSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8499455/
在我遇到的几乎所有代码示例中,从 JFrame 派生的类中方法 setDefaultCloseOperation 的参数是一些常量,例如 JFrame.EXIT_ON_CLOSE . 在这种情况下,由
这个问题已经有答案了: Why JFrame redefine the "EXIT_ON_CLOSE" which it inherits from interface "WindowConstant
这个问题已经存在: my JFrame has a error "Cannot instantiate the type JFrame" and no research has come with a
我有一个游戏,我试图拦截关闭事件并将用户返回到主菜单。我已经使用 DO_NOTHING_ON_CLOSE 解决了一半问题,但问题是我无法将常规功能返回到菜单屏幕。 您可能知道,问题是,如果 DO_NO
我被教导要添加它以始终将它添加到 jframe 的运行方法中,但与不使用它相比它不会改变任何东西。 我想知道的是,当你把它去掉时会发生什么? 谢谢 @Override public void run(
我有一个小问题。 我的 Java 应用程序拥有一些 native 资源。我想在退出应用程序之前释放这些资源。因此我写了一个 WindowListener在 windowClosed 中释放这些资源事件
目前我有一个实时 Activity 的 while 循环运行,它做了我想要的我唯一的问题是关闭框架(退出应用程序)而 while 循环仍然处于 Activity 状态。 frame.setDefaul
我一直在搜索关于这个话题的很多东西,但对任何答案都没有满意,所以最后在这里问了一个问题:)。无论如何,来自这个类似的 post很明显dispose()不会终止所有进程并且仍然保留在 task mana
我不太喜欢JFrame.EXIT_ON_CLOSE选项。如果有一个线程正在写入文件或下载某些内容,则该选项将在完成之前被终止。相反,我试图通过销毁 GUI 窗口来优雅地终止程序: /**
对于 EXIT_ON_CLOSE 和所有这些参数来说,使用枚举而不是最终变量不是更好吗? 最佳答案 我认为这是一个向后兼容的类型问题。 Window 早在 Java 1.5 首次引入枚举之前就已经存在
我注意到,如果设置了 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),关闭框架将结束其在任务管理器中的进程,但如果我实现 WindowListener 并
两者有什么区别。我正在阅读一篇关于您应该始终使用的文章 ( http://www.javalobby.org/java/forums/t17933) System.exit(0); 目前我在用 JFr
我有一个简单的 GUI: public class MyGUI extends JFrame{ public MyGUI(){ run();
假设Runtime.getRuntime().addShutdownHook(new Thread()设置正确,当Java应用程序窗口(JFrame)时如何调用ShutdownHook线程>) 关闭(
WindowConstants 定义如下: public interface WindowConstants { public static final int DO_NOTHING_ON_C
我正在使用 swing 创建一个 IDE,它可以编译和运行用户的程序。如果用户编写swing程序并运行该程序内有frame.setDefaultCloseOperation(JFrame.EXIT_O
我是一名优秀的程序员,十分优秀!