[英]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();
建議:
編輯:
這是為了解決您看到的錯誤:
關於第一個錯誤,這是因為在我提供的示例中,我使用了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 模式。 取而代之的是,這樣做:
另一種方法是為 DisposingJFrame 提供 MainWindow 的實例(這樣,您不需要將 MainFrame 聲明為單例)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.