2011-08-19 56 views
2

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

public class MainWindow 

{ 

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

處置類:

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

MainWindow.main_f.dispose()將無法​​工作,因爲main_f不是一個變量。你可以幫我嗎?

回答

2

建議

充分利用JFrame實例MainWindow,併爲它提供一個訪問方法。

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類,你應該有一個MainWindow例如,在這裏您可以簡單地做以下處置其JFrame實例:

mainWindowInstance.getMainFrame().dispose(); 

建議


編輯

這是爲了解決你所看到的錯誤:

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

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

關於第二個錯誤,mainWindowInstance的東西,我離開創建。這是一個「例如」 -

public class Disposing{ 
    private MainWindow mainWindowInstance; 

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

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

@Makaroni,此外,如果您做了'main_f'一個'static'領域,這樣的工作你想要的方式處置它,但這不是真正的OOP。 – mre

+0

IDE現在給我2個錯誤:1st。 「變量main_f可能沒有被初始化」,第二:找不到符號「mainWindowInstance」。我應該輸入什麼? – Makaroni

+0

@Makaroni,什麼錯誤?你能否包含你的更新代碼?請提供此信息作爲對您問題的修改。 – mre

0

如果你想像這樣訪問它,你需要使main_f成爲一個靜態變量。

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

  • 讓你的主窗口是一個單身
  • 讓你main_f你的主窗口的領域
  • 調用MainWindow.getInstance()getFrame()方法處理()

另一種方法是給DisposingJFrame主窗口的實例(這樣,你不需要申報大型機單身)

0

有一個最簡單的方法來做到這一點。另一類別設置一類的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(); 
    } 
}