Java 将类属性传递给另一个窗体,然后编辑其值
假设我有两个JFrame表单:Java 将类属性传递给另一个窗体,然后编辑其值,java,swing,class,reference,Java,Swing,Class,Reference,假设我有两个JFrame表单:StaffListMenu和LeaveDetailsMenu 在StaffListMenuclass I中有一个名为staff的属性,该属性是系统中当前所有工作人员的数组列表。我想点击按钮打开LeaveDetailsMenu表单,并将staff属性传递给LeaveDetailsMenu类。据我所知,我会这样做: private void btnLeaveDetailsActionPerformed(java.awt.event.ActionEvent evt) {
StaffListMenu
和LeaveDetailsMenu
在StaffListMenu
class I中有一个名为staff
的属性,该属性是系统中当前所有工作人员的数组列表。我想点击按钮打开LeaveDetailsMenu
表单,并将staff
属性传递给LeaveDetailsMenu
类。据我所知,我会这样做:
private void btnLeaveDetailsActionPerformed(java.awt.event.ActionEvent evt) {
LeaveDetailsMenu leaveDetailsForm = new LeaveDetailsMenu(staff);
leaveDetailsForm.setVisible(true);
}
现在,我想调用一些方法,并从leaveDetailsMenu
类中重新分配staff
ArrayList中的一些元素。如果我这样做,更改是否会反映在StaffListMenu
类的staff
属性中
我读到Java并没有通过引用传递(就像C#can do一样,这是我在桌面应用程序中使用的唯一一种语言),而是传递一个指向staff
的内存位置的指针。按照这个逻辑,它应该对statflistmenu
类中的属性进行更改,对吗
另外,这是一个由两部分组成的问题,当LeaveDetailsMenu
窗体关闭时,我是否可以在我的StaffListMenu
类中识别?要回电话吗
谢谢你的帮助
它应该更改StaffListMenu类中的属性,
对吧?
对。您传递的是ArrayList对象(从技术上讲,您传递的是内存中ArrayList地址的值),因此在调用内部对对象所做的任何更改都将在调用外部可见
在我的StaffListMenu课程中,当
LeaveDetails功能表是否已关闭
对。看看(JFrame继承了哪个)。您提供了一个侦听器,可以收到窗口关闭事件的通知。您还可以使用模态JDialog而不是JFrame,它将阻止调用代码,直到对话框关闭为止