【发布时间】:2013-07-24 12:41:32
【问题描述】:
我有一个框架问题,我想在手术后重新启动。
具体来说,下面是Frame的开头:
public static void startHome() {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame = new HomeGUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
在框架之下:
public HomeGUI() throws IOException, InstantiationException, IllegalAccessException {
setIconImage(Toolkit.getDefaultToolkit().getImage(ico_path));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 669, 516);
// etc...
低于我的实际重启代码,但不起作用:
frame.dispose();
startHome();
处理在进入run() 方法之前停止。
我尝试在invokeLater 之前和dispose() 之后设置frame = null,但不起作用。
谢谢大家
【问题讨论】:
-
您的 HomeGUI 类必须扩展 JFrame。你能提供你的 HomeGUI 类的代码吗?
-
当你调用dispose方法时,你可能看到Frame被关闭了.. dispose关闭了frame并停止线程的进程(run方法),所以对象上没有任何东西持有 Frame(如果你写了 Frame1 f = new Frame1(),那么 f 就是垃圾).. 你必须在 dispose 之后创建一个新实例
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2) 见The Use of Multiple JFrames, Good/Bad Practice?
标签: java swing frame dispose restart