問題是,這樣做:editUser name = new editUser()
是你正在創建一個新的實例(除了事實上,類名稱應該按照大小寫以大寫字母開頭)。這會導致您丟失任何數據,因爲您現在正在引用新的對象。
如果需要從以前的幀訪問數據,你需要做的將是兩種:
- 所有相關的數據創建一個新的對象,並把它傳遞給下一個框架或
- 將當前幀傳遞到下一幀。這將使新框架能夠引用前一框架。
作爲一個附註,Card Layout可能與您試圖達到的目標相關。
編輯: 按您的評論的問題: 假設你有一個editUser
框架,說我們把它叫做frame1
你填入你需要的所有數據。 然後,用戶按下Next或類似的東西,導致他/她轉到下一幀,因此frame1
將不再隱藏或不存在,具體取決於您的實現。我們稱之爲第二幀frame2
。現在,在frame2
中,您需要訪問frame1
中存儲的詳細信息。這樣做:editUser name = new editUser();
將導致frame2
創建新frame1
的實例,因此這意味着您已創建一個具有空值的新框架。調用name.getUser()
不應該產生任何東西。
當我提到創建一個對象與相關的數據我的意思是,如果你正在編輯用戶值,你可以創建一個對象,例如所有的信息被編輯。因此,它可能有領域,如userId
,originalUserName
,newUserName
等
一個用戶按下下一步你frame1
,你可以創建和填充這個對象,並用它來將數據從一個幀轉移到下一個。在這種情況下,您要創建的對象將稱爲數據傳輸對象(DTO)。
所以,你的第二個框架的構造看起來像這樣:
public editPass(UserEditDTO userEditDTO)
{
initComponents();
String test = userEditDTO.getNewUserName(); //gets the new username the user has provided.
}
而在你editUser
類,只是創造editPass
一個新實例之前,你會做一些像這樣:
...
UserEditDTO uEDTO = new UserEditDTO();
uEDTO = ... //set all the relevant fields here
new editPass(uEDTO).setVisible(true);
...
或者,您可以將參考傳遞給frame1
而不是DTO。這種方法更簡單。所以,你的editPass
構造函數應該是這樣的:
public editPass(editUser editUser)
{
initComponents();
String test = editUser.getUser();
}
與您editUser
代碼看起來像這樣:
...
new editPass(this).setVisible(true);
...
謝謝你的建議,但這裏的下一個問題,我將如何創建一個對象相關數據? 看到我的理解是,我正在創建一個名爲getUser的對象,請原諒我,如果我錯了,但不是我做了什麼? – Silentdarkness 2013-02-15 06:24:22
正如我注意到的那樣,我使用netbeans來爲我創建框架。 – Silentdarkness 2013-02-15 06:26:55
@ user1982690:我擴展了我的答案。 – npinti 2013-02-15 06:39:52