0

假设我有两种 JFrame 形式:StaffListMenuLeaveDetailsMenu.

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

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

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

我读到 Java 不会通过引用传递(就像 C# 一样,这是我用于桌面应用程序的唯一其他语言),而是将指针传递给staff. 按照这个逻辑,它应该对类中的属性进行更改StaffListMenu,对吧?

另外,一个两部分的问题,StaffListMenuLeaveDetailsMenu表格关闭时,我有没有办法在课堂上识别?像回调?

感谢您的任何帮助。

4

1 回答 1

0

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

是的。您正在传递 ArrayList 对象(从技术上讲,您正在通过值传递 ArrayList 在内存中的地址的值),因此在调用内部对对象所做的任何更改都将在其外部可见。

当 LeaveDetailsMenu 表单关闭时,我可以在 StaffListMenu 类中识别吗?

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

于 2013-01-11T19:57:29.557 回答