2010-03-03 57 views
1

我正在編寫一個應用程序,並且在很多情況下需要直接訪問 mainFrame。這沒關係,如果我要做到這一點(?):寫好代碼問題....?

public class Main { 
private static JFrame mainFrame(); 
public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
       mainFrame = new JFrame(); //.... 
     }); 
} 
//... 
public static JFrame getMainFrame() { 
      return mainFrame; 
} 
} 

我只是覺得這是更容易訪問 mainFrame中然後直接通過它像一個參考。 謝謝!

回答

2

我不認爲你需要單例模式,如果你只有一個主類,你將只有一個JFrame在你的應用程序。在這種情況下,靜態變量已經足夠了。現在,爲什麼你需要訪問mainFrame?

  • 您是否需要從該mainFrame創建子框架?
  • 你需要顯示一個消息框,並且你希望它的父級成爲mainFrame嗎?
  • 你有那門課的邏輯嗎?

如果你在你的主機實例方法,例如,你需要訪問你的應用程序從任何地方這些方法,你可以把這些方法私人,創建公共靜態方法,使這些靜態方法獲得mainFrame實例並調用私有方法。也許你應該從應用程序中的其他地方刪除邏輯並將其添加到mainFrame類中。

這一切都取決於你對這個mainFrame對象做什麼。在我看來,你有什麼進入它並不壞。

+0

+1 - 關鍵是要找出爲什麼要訪問mainClass – Luhar

1

你可能想要考慮實現Singleton模式。擴展JFrame以創建AppFrame類,並將該類作爲Singleton。這通常是皺眉,但是你正在尋找的是一個解決方案。大多數GUI應用程序都有一個MVC架構,並且直接訪問View(即您的情況下的JFrame)僅限於Controller類。如果您正在實施基於GUI的應用程序,您可能需要閱讀MVC模式。

Singleton模式信息hereInformation on MVC