Java 将对象传递给swing GUI

Java 将对象传递给swing GUI,java,swing,object,user-interface,initialization,Java,Swing,Object,User Interface,Initialization,我有5-6个GUI(单独的类),一个根据其功能打开另一个,每个GUI都包含一个对象,当从Book_GUI.java的座位选择菜单中单击JButton“Book”时,我会将这样的航班预订系统中的最后一个对象传递给我的GUI Passenger_GUI frameP = new Passenger_GUI(eco.seats[x][z].getMyPassenger()); frameP.setVisible(true); eco.seats[x][z].setBooked(true);

我有5-6个GUI(单独的类),一个根据其功能打开另一个,每个GUI都包含一个对象,当从Book_GUI.java的座位选择菜单中单击JButton“Book”时,我会将这样的航班预订系统中的最后一个对象传递给我的GUI

Passenger_GUI frameP = new Passenger_GUI(eco.seats[x][z].getMyPassenger());
frameP.setVisible(true);    
eco.seats[x][z].setBooked(true);
在customer_GUI.java中,我有:

        private Passenger passenger_GUI;
稍后在构造函数中,在不初始化乘客GUI的情况下,我将输入乘客对象分配给它:

public Passenger_GUI(Passenger myPassenger) {
    passenger_GUI = myPassenger;
一切正常,没有错误。。。我有两个问题,我必须初始化第一个乘客界面,然后进行分配,还是不需要? 第二个重要问题;我在Passenger\u GU中对object myPassenger(
eco.seats[x][z].myPassenger
)所做的更改是否会保存在以前的GUI
Book\u GUI.java
中,我认为这不是因为Passenger\u GUI类没有返回值。。。还是我错了?我怎样才能使我在对象上应用的更改保持稳定,并在
Book\u GUI.java
?(以前的GUI)中用于未来 谢谢你抽出时间

以下是完整的课程:

  • 不,您可以在构造函数中初始化
    passenger\u GUI
  • 这些变化应该持续下去。由于您正在将
    对象
    而不是原语传递给
    Passenger\u GUI
    构造函数,因此Java实际上传递了对该
    Passenger
    对象的引用。您的
    Passenger\u GUI.Passenger\u GUI
    字段应该引用与
    eco.seats[x][z].getMyPassenger()相同的对象(实际上,在内存中的位置也相同),因此从
    Passenger\u GUI
    中对该对象所做的任何更改也应该在
    Book\u GUI
    中可见
  • 不,您可以在构造函数中初始化
    passenger\u GUI
  • 这些变化应该持续下去。由于您正在将
    对象
    而不是原语传递给
    Passenger\u GUI
    构造函数,因此Java实际上传递了对该
    Passenger
    对象的引用。您的
    Passenger\u GUI.Passenger\u GUI
    字段应该引用与
    eco.seats[x][z].getMyPassenger()相同的对象(实际上,在内存中的位置也相同),因此从
    Passenger\u GUI
    中对该对象所做的任何更改也应该在
    Book\u GUI
    中可见

  • 请您将所有相关代码放在这里,以便理解问题?@SeniorJD更新了问题,并提供了源代码完整类代码的链接。“我有5-6个GUI。一个GUI根据其功能打开另一个GUI”1)请参见2)为了更快地获得更好的帮助,发布一条。@AndrewThompson好的,我夸大了我只有3个GUI主GUI、书GUI和乘客GUI,我很担心将对象从一个传递到另一个,但我看到它可以工作,并且更改被应用到对象,同时感谢链接,SSCE看起来非常有用!请您将所有相关代码放在这里,以便理解问题?@SeniorJD更新了问题,并提供了源代码完整类代码的链接。“我有5-6个GUI。一个GUI根据其功能打开另一个GUI”1)请参见2)为了更快地获得更好的帮助,发布一条。@AndrewThompson好的,我夸大了我只有3个GUI主GUI、书GUI和乘客GUI,我很担心将对象从一个传递到另一个,但我看到它可以工作,并且更改被应用到对象,同时感谢链接,SSCE看起来非常有用!我不理解第一个答案,我把我的完整代码放在问题的末尾,我的乘客类没有构造函数。因此乘客GUI从未被初始化。但仍然有效吗?这是有效的还是我应该做的:
    Passenger\u GUI=new Passenger()
    passenger\u GUI=myPassenger?你已经在做我在对#1的回答中所说的了。您正在将一个已存在的乘客对象传递给乘客GUI构造函数:
    Passenger\u GUI frameP=new Passenger\u GUI(eco.seats[x][z].getMyPassenger())。然后,构造函数获取该对象并将其分配给
    passenger\u GUI
    字段。这将初始化
    乘客\u GUI
    。您不需要在构造函数之外对其进行初始化,也不需要使用
    new
    来初始化某些内容。您只需要将其分配给某个值,您已经在构造函数中执行了此操作。我刚刚做了一个测试,以确定我为乘客输入的名称是否在以前的GUI中可见,并且它可以工作,因此您所说的和我假设的都是真的:)感谢您的澄清!有时编译器不会为无效语句提供错误。。。这就是为什么我只是想确定一下!我不理解第一个答案,我把我的完整代码放在问题的末尾,我的乘客类没有构造函数。因此乘客GUI从未被初始化。但仍然有效吗?这是有效的还是我应该做的:
    Passenger\u GUI=new Passenger()
    passenger\u GUI=myPassenger?你已经在做我在对#1的回答中所说的了。您正在将一个已存在的乘客对象传递给乘客GUI构造函数:
    Passenger\u GUI frameP=new Passenger\u GUI(eco.seats[x][z].getMyPassenger())。然后,构造函数获取该对象并将其分配给
    passenger\u GUI
    字段。这将初始化
    乘客\u GUI
    。您不需要在构造函数之外对其进行初始化,也不需要使用
    new
    来初始化某些内容。您只需要将其分配给某个值,您已经在构造函数中执行了此操作。我刚刚做了一个测试,以确定我为乘客输入的名称是否在以前的GUI中可见,并且它可以工作,因此您所说的和我假设的都是真的:)感谢您的澄清!有时编译器不会为无效语句提供错误。。。这就是为什么我只是想确定一下!