Java GUI 对象在传递给类后变为 null

标签 java swing oop object netbeans

我试图在两个 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;
}
}

最佳答案

staffListManagerMenu 的构造函数中为 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/

相关文章:

java - 动态调用 WSDL 2.0 描述的服务

java - JSplitPane : Possible to have one side empty/transparent to see lower layer underneath?

java - jtable 和自定义组合

c++ - 将基本类的对象扩展为复杂类的对象

php - fatal error : Function name must be a string in.。 PHP错误

java - 如何修复 JLabel 透明度错误?

java - 如何从 JFrame 将数据输出到 JPanel

java - 调用 JNSI 中的方法,它是位于服务器包中的内部方法

java - JTabbedPane 和 Paint

oop - 汽车和油漆类别关系