我试图在两个 GUI 类之间传递一个 Warehouse 类型的对象,但由于某种原因,它在传递后变为 null。是否正在被垃圾收集?如果是这样我该如何阻止它?
这是第一个实例化仓库对象并用虚拟数据填充它的类,并在我试图将数据发送到的按钮提示上打开一个新的 Jframe。
public class StaffLeaveMainMenu extends javax.swing.JFrame {
private Warehouse staffList = new Warehouse();
/**
* Creates new form StaffLeaveMainMenu
*/
public StaffLeaveMainMenu() {
staffList.createTestData();
System.out.print(staffList);
initComponents();
}
private void jButtonManagerActionPerformed(java.awt.event.ActionEvent evt) {
ManagerMenu newFrame = new ManagerMenu();
newFrame.setWarehouse(staffList);
newFrame.setVisible(true);
}
}
然后这是它被发送到的类:
public class ManagerMenu extends javax.swing.JFrame {
private Warehouse staffList;
/**
* Creates new form ManagerMenu
*/
public ManagerMenu() {
listModel = new DefaultListModel();
System.out.print(staffList);
refreshListModel();
initComponents();
}
public void setWarehouse(Warehouse objTarget) {
staffList = objTarget;
}
}
最佳答案
staffList
在 ManagerMenu
的构造函数中为 null,因为您在调用构造函数之后传递它。
要解决这个问题,您必须将其传递到构造函数本身,而不是 setter 中。
public ManagerMenu(Warehouse objTarget) {
staffList = objTarget;
listModel = new DefaultListModel();
System.out.print(staffList);
refreshListModel();
initComponents();
}
关于Java GUI 对象在传递给类后变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40728074/