簡體   English   中英

從另一個 class 處理 JFrame

[英]Disposing JFrame from another class

如何從另一個 class 處理JFrame 我的代碼在下面列出。

public class MainWindow

{

JFrame main_f = new JFrame("xx");
main_f.getContentPane().setLayout(new BorderLayout());
main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
.
.
.
}

處理 class:

public static void DisposingJFrame (){
.
.
.
MainWindow.main_f.dispose();
}

MainWindow.main_f.dispose()不起作用,因為main_f不是變量。 你能幫助我嗎?

建議

JFrame實例設為MainWindow class 的字段,並為其提供訪問器方法。

public final class MainWindow{
    private final JFrame main_f;

    public MainWindow(){
        main_f = new JFrame("xx");
        main_f.getContentPane().setLayout(new BorderLayout());
        main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        .
        .
        .
    }

    public final JFrame getMainFrame(){
        return main_f;
    }
    .
    .
    .
}

然后在Disposing class 中,您應該有一個MainWindow實例,您只需在其中執行以下操作即可處理其JFrame實例:

mainWindowInstance.getMainFrame().dispose();

建議


編輯

這是為了解決您看到的錯誤:

  1. 變量 main_f 可能尚未初始化
  2. 找不到符號“mainWindowInstance”

關於第一個錯誤,這是因為在我提供的示例中,我使用了final修飾符。 此字段必須在 object 創建時初始化。 因此,您必須擁有多個構造函數。 要解決此問題,請刪除final修飾符,或在MainWindow的每個構造函數中初始化main_f字段。

關於第二個錯誤, mainWindowInstance是我留給創建的。 這是一個“例如” -

public class Disposing{
    private MainWindow mainWindowInstance;

    public Disposing(){
        mainWindowInstance = new MainWindow();
        .
        .
        .
    }

    public void diposeMainFrame(){
        mainWindowInstance.getMainFrame().dispose();
    }
}

有一種最簡單的方法可以做到這一點。 用於從另一個 ZA2F2ED4F8EBC2CBB64C21A29DZ 處理 class 的 JFrame 的 ​​Java 代碼如下:

public class Main extends JFrame
{
  Main()
  {
    Main x=new Main();
    Other.a=x;
  }
}

public class Other extends JFrame
{
   static Main a;

   Other()
   {  
      a.dispose();
    }
}

如果你想像這樣訪問它,你需要讓 main_f 成為一個 static 變量。

但是,這是非 object 模式。 取而代之的是,這樣做:

  • 使您的 MainWindow 成為 singleton
  • 使您的 main_f 成為您的 MainWindow 的一個字段
  • 調用 MainWindow.getInstance().getFrame().dispose()

另一種方法是為 DisposingJFrame 提供 MainWindow 的實例(這樣,您不需要將 MainFrame 聲明為單例)

暫無
暫無

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

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