2013-01-11 31 views
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); 
} 

,我想調用一些方法,並從leaveDetailsMenu類重新分配在staff ArrayList中的一些元素。如果我這樣做,這些更改是否會反映在StaffListMenu類的staff屬性中?

我讀過Java沒有通過引用傳遞(就像C#可以做的那樣,它是我用於桌面應用程序的唯一其他語言),而是傳遞一個指向內存位置staff的指針。按照這個邏輯,它應該修改StaffListMenu類中的屬性,對吧?

此外,有兩種部分的問題,有沒有一種方法可以在我的StaffListMenu課程中識別出LeaveDetailsMenu表單已關閉?像回調?

謝謝你的幫助。

回答

0

它應該更改StaffListMenu類中的屬性 對不對?

是的。你傳遞ArrayList對象(技術上說,你傳遞的值是ArrayList地址在內存中的值),所以對該對象內部的對象所做的任何更改都將在其外部可見。

有沒有一種方法可以在我的StaffListMenu類中識別出 LeaveDetailsMenu表單已關閉?

是的。看看Window.addWindowListener(WindowListener l)(JFrame繼承)。你提供了一個監聽器,你可以通知窗口關閉事件。

+4

您也可以使用模態JDialog而不是JFrame,它將阻止調用代碼,直到對話框關閉 – MadProgrammer

相關問題