簡體   English   中英

處置后重新啟動JFrame

[英]Restart a JFrame after dispose

我有一個想要在操作后重新啟動的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()方法之前,處理停止。 我試圖在invokeLater之前和dispose()之后設置frame = null ,但是不起作用。

謝謝你們

  1. 有(重新使用)兩種方式(無意重新啟動)

    • setIconImage()

    • CardLayout

  2. 確保setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; 終止當前的JVM

  3. 正確的LayoutManagerJComponent必須將PreferredSize返回給JFrame ,然后調用

    • JFrame.pack()
    • JFrame.setLocation()
    • JFrame.setVisisble(true)
    • 作為構造函數中的最后一個代碼行
    • 因為我找不到使用AbsoluteLayour的任何理由,例如setBounds(100, 100, 669, 516);
  4. dispose()setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); setVisible(false)相同,您可以通過迭代Window[] wins = Window.getWindows();數組來從當前JVM獲取所有Top-Level Containers Window[] wins = Window.getWindows();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM