我有一個概念上的問題(有些問題!) 讓我們用一個真實的項目來解釋它。 我有一個Login
swing
窗體,它有主要的方法和應用程序從這裏開始。在另一個裏面使用其他類方法和字段
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Login().setVisible(true);
}
}); // this method is inside main Method
的Login
表格包含一些TextField
S和Button
S,也有一些methods
。 (例如,當我按下Enter
按鈕時,某些認證和動作會執行) 按下Enter按鈕後,如果認證成功,則轉到另一個名爲MainTabbedForm
的表格。 現在的問題是關於Object Oriented Programming
和類加載。 我想訪問Login
表格形式MainTabbedForm
。例如,我想在認證成功後dispose
Login
表單,並且想要在MainTabbedForm
構造函數中執行此操作。我在Login
類中編寫了一個方法將登錄連接到MainTabbedForm。通過這種方式:
public void disappearForm(MainTabbedForm form) {
this.form=form; // I already has defined a MainTabbedForm field in top of the Login class
this.dispose(); // Dispose the Login class
}
並使用它在MainTabbedForm的構造函數,只使用聲明登錄表單作爲MainTabbedForm場之前;
public MainTabbedForm(Login login) {
this.login=login;
login.disappearForm(this)
}
但它給了我NullPointException因爲登錄尚未初始化。 如果我創建一個新的Login類,當然這是一個新類,不會做我想要的事情,因爲是一個新實例,而不是主要方法中第一個創建的Login
。 現在我有一個問題,我怎樣才能連接這兩個類彼此? 當然,我可以做一個靜態的方法來完成我的工作!但我不想這樣做。 我認爲是因爲這個類加載和編程藝術框架和設計模式,如OSGi
和MVC
和其他創建,以管理加載和訪問服務和對象和其他更動態的東西,我是對嗎? 現在回覆這些答案真的很感謝!
爲什麼你想從'MainTabbedForm'調用'處置()'?你如何創建'MainTabbedForm'?爲什麼它還會將對*本身*的引用傳遞給'disappearForm()'方法? – David