将类属性传递给另一个表单,然后编辑其值

时间:2013-01-11 19:48:09

标签: java swing class reference

假设我有两个JFrame表单:StaffListMenuLeaveDetailsMenu

StaffListMenu类中,我有一个名为staff的属性,它是当前系统中所有工作人员的ArrayList。我想按一下按钮打开LeaveDetailsMenu表单,然后将staff属性传递给LeaveDetailsMenu类。据我所知,我会这样做:

private void btnLeaveDetailsActionPerformed(java.awt.event.ActionEvent evt) {
    LeaveDetailsMenu leaveDetailsForm = new LeaveDetailsMenu(staff);
    leaveDetailsForm.setVisible(true);
}

现在,我想调用一些方法并从staff类重新分配leaveDetailsMenu ArrayList中的一些元素。如果我这样做,更改是否会反映在staff类的StaffListMenu属性中?

我读到Java没有通过引用传递(就像C#可以做的那样,我用于桌面应用程序的唯一其他语言),而是传递指向staff的内存位置的指针。按照这个逻辑,它应该对StaffListMenu类中的属性进行更改,对吗?

另外,这是一个两部分问题,当StaffListMenu表单关闭时,我可以在LeaveDetailsMenu课程中识别出一种方法吗?像回调一样?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

它应该对StaffListMenu类中的属性进行更改,   正确?

是肯定的。你传递了ArrayList对象(从技术上讲,你通过值传递ArrayList的地址在内存中的值)所以对调用内对象所做的任何更改都将在它之外可见。

  

有什么方法可以在我的StaffListMenu类中识别出来   LeaveDetailsMenu表单已关闭?

是肯定的。看看Window.addWindowListener(WindowListener l)(JFrame继承)。您提供了一个监听器,您可以收到窗口关闭事件的通知。