Receiving a null pointer error when trying to switch between windows. When I click on the Client button it does not switch windows and gives the error. Not sure what is wrong, I've spent hours looking through and feel like it's something small. Thanks for the help!
package GUI;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MainWindow extends JFrame {
private Container mainPane;
private JButton mainButton;
private JButton clientButton;
private JButton residentialButton;
private JButton commercialButton;
private Vector<JPanel> panelList;
public MainWindow() {
panelList = new Vector<JPanel>(4);
JPanel tempPanel = createMainPanel();
panelList.add(tempPanel);
ClientWindow clientWindow = new ClientWindow();
panelList.add(clientWindow.createClientPanel());
ResidentialWindow residentialWindow = new ResidentialWindow();
panelList.add(residentialWindow.createResidentialPanel());
CommercialWindow commercialWindow = new CommercialWindow();
panelList.add(commercialWindow.createCommercialPanel());
}
public void createWindow() {
this.setTitle("Management Software");
int frameWidth = 936;
int frameHeight = 592;
double screenWidth = this.getToolkit().getScreenSize().getWidth();
double screenHeight = this.getToolkit().getScreenSize().getHeight();
int startX = (int) (screenWidth / 2 - frameWidth / 2);
int startY = (int) (screenHeight / 2 - frameHeight / 2);
this.setSize(frameWidth, frameHeight);
this.setLocation(startX, startY);
mainPane = this.getContentPane();
mainPane.setLayout(new BorderLayout(5, 5));
JPanel buttonPanel = new JPanel(new GridLayout(1, 4));
Border buttonEdge = BorderFactory.createRaisedBevelBorder();
mainButton = new JButton("Main");
mainButton.setBorder(buttonEdge);
mainButton.addActionListener(new ButtonListener());
buttonPanel.add(mainButton);
clientButton = new JButton("Client");
clientButton.setBorder(buttonEdge);
clientButton.addActionListener(new ButtonListener());
buttonPanel.add(clientButton);
residentialButton = new JButton("Residential");
residentialButton.setBorder(buttonEdge);
residentialButton.addActionListener(new ButtonListener());
buttonPanel.add(residentialButton);
commercialButton = new JButton("Commercial");
commercialButton.setBorder(buttonEdge);
commercialButton.addActionListener(new ButtonListener());
buttonPanel.add(commercialButton);
mainPane.add(buttonPanel, BorderLayout.NORTH);
mainPane.add(panelList.get(0), BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private JPanel createMainPanel() {
JPanel mainPanel = new JPanel();
JLabel mainL = new JLabel("The Main Screen",SwingConstants.CENTER);
mainL.setForeground(Color.blue);
mainL.setFont(new Font("Copperplate Gothic Bold",Font.BOLD,48));
mainPanel.add(mainL);
return mainPanel;
}
/***************************** INNER CLASSES *****************************/
private JPanel tp;
@Override
public void actionPerformed(ActionEvent e){
for(int i = 0; i < panelList.size(); i++){
tp = panelList.get(i);
mainPane.remove(tp);
tp.setVisible(false);
}
if(e.getSource() == mainButton){
tp = panelList.get(0);
mainPane.add(tp,BorderLayout.CENTER);
tp.setVisible(true);
}
if(e.getSource() == clientButton){
tp = panelList.get(1);
mainPane.add(tp,BorderLayout.CENTER);
tp.setVisible(true);
}
if(e.getSource() == residentialButton){
tp = panelList.get(2);
mainPane.add(tp,BorderLayout.CENTER);
tp.setVisible(true);
}
if(e.getSource() == commercialButton){
tp = panelList.get(3);
mainPane.add(tp,BorderLayout.CENTER);
tp.setVisible(true);
}
}
}
}