我有一个WorldEditor
JFrame,用于启动Game
JFrame。但是,当Game
关闭时,我不希望它结束整个程序,因此我将默认关闭操作设置为HIDE_ON_CLOSE
。但是,为了节省资源,我在WorldEditor
正在运行时暂停Game
。
如何检测隐藏Game
窗口的时间,以便我可以恢复WorldEditor
?
答案 0 :(得分:4)
为什么不自己隐藏框架而不是使用默认的HIDE_ON_CLOSE
?
// inside WindowListener class
public windowClosing(WindowEvent e) {
yourFrame.setVisible( false );
// your code here...
}
编辑:来自docs:
在任何窗口侦听器之后执行默认关闭操作 处理窗口关闭事件。所以,例如,假设你 指定默认关闭操作是处置帧。您 还实现了一个窗口监听器,用于测试框架是否为 最后一个可见,如果是,则保存一些数据并退出 应用。在这些条件下,当用户关闭一个框架时, 首先会调用window listener。如果它没有退出 应用程序,然后默认关闭操作 - 处理框架 - 然后将被执行。
使用工作示例进行新编辑:
import java.awt.event.*;
import javax.swing.JFrame;
public class ListenerTest extends JFrame implements WindowListener {
public static void main(String[] args) {
ListenerTest frame = new ListenerTest();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setVisible( true );
}
public ListenerTest() {
this.addWindowListener( this );
}
public void windowActivated(WindowEvent e) {
System.out.println(" activated ");
}
public void windowClosed(WindowEvent e){
System.out.println(" closed ");
}
public void windowClosing(WindowEvent e){
System.out.println(" closing ");
}
public void windowDeactivated(WindowEvent e){
System.out.println(" deactivated ");
}
public void windowDeiconified(WindowEvent e){
System.out.println(" deiconified ");
}
public void windowIconified(WindowEvent e){
System.out.println(" iconified ");
}
public void windowOpened(WindowEvent e){
System.out.println(" opened ");
}
}
测试一下,以便捕获什么触发哪些事件。