我在操作后想要重启的Frame有问题。
具体而言,低于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()
方法之前停止。
我尝试在frame = null
之前和invokeLater
之后设置dispose()
,但不起作用。
谢谢大家
答案 0 :(得分:1)
有两种方式(没有任何意图重新启动)到(重新)使用
setIconImage()
CardLayout
确保setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
;终止当前的JVM
正确LayoutManager
,JComponent
(s)必须将PreferredSize
返回JFrame
,然后致电
JFrame.pack()
JFrame.setLocation()
JFrame.setVisisble(true)
setBounds(100, 100, 669, 516);
dispose()
或setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
与setVisible(false)
相同,您可以通过迭代Top-Level Containers
<的数组从当前JVM获取所有Window[] wins = Window.getWindows();
/ p>