2013-06-19 48 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