Hello,
I'm building up a GUI and have noticed a very weird thing happening. I instantiate a JMenuBar but do nothing with the reference until the end of the init method. Before the end of that method is reached, however, the menubar reference gets set back to null when I try to add a JPanel to the JTabbedPane. I can't understand why/how
Java would let such a method set a non-connected reference to null. Any help would be appreciated. Here's the initComponents() method. It is mostly auto-generated by Netbeans, although I did add some custom pre/post-init code generation in there. Still, note how the mainMenuBar reference is not used. It is set to null on the first call to subSystemPane.addTab:
private void initComponents() {//GEN-BEGIN:initComponents
subSystemPane = new javax.swing.JTabbedPane();
exerciseManagementPanel = new javax.swing.JPanel();
exerciseNameLabel = new javax.swing.JLabel();
exerciseNameTextField = new javax.swing.JTextField();
exerciseLoadButton = new javax.swing.JButton();
exerciseSaveButton = new javax.swing.JButton();
exerciseDetailsPanel = new javax.swing.JPanel();
descriptionLabel = new javax.swing.JLabel();
descriptionTextField = new javax.swing.JTextField();
authorLabel = new javax.swing.JLabel();
authorTextField = new javax.swing.JTextField();
objectiveLabel = new javax.swing.JLabel();
objectiveTextField = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
PlanViewDisplay pvd = new PlanViewDisplay();
pvdPanel = pvd.getMainPanel();
mainMenuBar = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
getContentPane().setLayout(new java.awt.FlowLayout());
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("ReadiSim GUI");
setBackground(new java.awt.Color(0, 0, 0));
setName("MainFrame");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
subSystemPane.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT);
subSystemPane.setMaximumSize(new java.awt.Dimension(800, 600));
subSystemPane.addChangeListener(this);
exerciseManagementPanel.setPreferredSize(new java.awt.Dimension(500, 200));
exerciseNameLabel.setText("Exercise Name");
exerciseManagementPanel.add(exerciseNameLabel);
exerciseNameTextField.setColumns(10);
exerciseManagementPanel.add(exerciseNameTextField);
exerciseLoadButton.setText("Load");
exerciseLoadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exerciseLoadButtonActionPerformed(evt);
}
});
exerciseManagementPanel.add(exerciseLoadButton);
exerciseSaveButton.setText("Save");
exerciseManagementPanel.add(exerciseSaveButton);
exerciseDetailsPanel.setBorder(new javax.swing.border.MatteBorder(null));
exerciseDetailsPanel.setPreferredSize(new java.awt.Dimension(450, 100));
descriptionLabel.setText("Description:");
exerciseDetailsPanel.add(descriptionLabel);
descriptionTextField.setColumns(15);
exerciseDetailsPanel.add(descriptionTextField);
authorLabel.setText("Author:");
exerciseDetailsPanel.add(authorLabel);
authorTextField.setColumns(10);
exerciseDetailsPanel.add(authorTextField);
objectiveLabel.setText("Objective:");
exerciseDetailsPanel.add(objectiveLabel);
objectiveTextField.setColumns(16);
exerciseDetailsPanel.add(objectiveTextField);
exerciseManagementPanel.add(exerciseDetailsPanel);
jButton1.setText("DUMMY CREATE");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
exerciseManagementPanel.add(jButton1);
jButton2.setText("GET HOSTS");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
exerciseManagementPanel.add(jButton2);
subSystemPane.addTab("Exercise Management", exerciseManagementPanel);
subSystemPane.addTab("PVD", pvdPanel);
getContentPane().add(subSystemPane);
jMenu1.setText("Menu");
mainMenuBar.add(jMenu1);
setJMenuBar(mainMenuBar);
pack();
}//GEN-END:initComponents