2013-06-19 44 views
0

我有5-6圖形用戶界面(單獨的類)彼此根據各自的功能打開,每個GUI需要一個對象的內部,我通過最終目標在航班預訂系統像這樣我的GUI時一個JButton的「書」從座位選擇菜單中點擊Book_GUI.java傳遞對象擺動GUI

Passenger_GUI frameP = new Passenger_GUI(eco.seats[x][z].getMyPassenger()); 
frameP.setVisible(true);  
eco.seats[x][z].setBooked(true); 
在Passenger_GUI.java

我:

 private Passenger passenger_GUI; 

後來在構造函數不初始化passenger_GUI我輸入乘客對象分配給它:

public Passenger_GUI(Passenger myPassenger) { 
    passenger_GUI = myPassenger; 

一切都沒有錯誤...我有兩個問題,我必須初始化第一個passenger_GUI,然後做出分配或者是沒有必要的嗎? 第二個重要問題;我做的Passenger_GU的變化爲對象myPassenger(eco.seats[x][z].myPassenger),將它們保存在以前的GUI Book_GUI.java我覺得不是因爲Passenger_GUI類沒有返回值...還是我錯了嗎?我怎麼能做出改變我申請一個對象穩定並在將來使用Book_GUI.java?(以前的GUI) 謝謝你的時間!

這裏全類: http://www.copypastecode.com/643018/ http://www.copypastecode.com/643022/

+0

請你能把這裏所有的相關的代碼問題的理解? – SeniorJD

+0

@SeniorJD通過指向源代碼完整類的鏈接更新了該問題。 – Anarkie

+1

*「我有5-6個GUI ..根據其功能打開另一個GUI」* 1)請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/418556 )2)爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

4
  1. 沒有,你可以初始化在構造函數passenger_GUI
  2. 更改應該持續。既然你傳遞了一個Object而不是一個原語給你的構造函數,Java實際上會傳遞一個對該對象的引用。你Passenger_GUI.passenger_GUI場應該是指同一個對象(而事實上,在內存中的同一位置)eco.seats[x][z].getMyPassenger(),所以從Passenger_GUI內對該對象所做的任何更改也應可見從Book_GUI
+0

我不明白第一個答案,我把我的全部代碼的問題到最後,我的客運班是一個沒有constructor.So passenger_GUI是永不initialized.But還是工作原理是有效的,或者我應該作出: 'passenger_GUI = new Passenger();' 'passenger_GUI = myPassenger;'? – Anarkie

+0

你已經在回答#1時說過了。你將一個已經存在的Passenger對象傳遞給你的Passenger_GUI構造函數:'Passenger_GUI frameP = new Passenger_GUI(eco.seats [x] [z] .getMyPassenger());'。然後構造函數將這個對象分配給'passenger_GUI'字段。這初始化'passenger_GUI'。你不需要在構造函數之外初始化它。 – jag426

+0

您不一定需要使用'new'來初始化某些內容。你只需要將它分配給一些值,你已經在你的構造函數中完成了。 – jag426