gpt4 book ai didi

Java - 如何 DO_NOTHING_ON_CLOSE,然后启用 EXIT_ON_CLOSE?

转载 作者:行者123 更新时间:2023-11-29 06:06:03 25 4
gpt4 key购买 nike

我有一个游戏,我试图拦截关闭事件并将用户返回到主菜单。我已经使用 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/

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