"RoomSystem.Java"코드에 정의 된 JPanel을 제대로 추가하려면 어떻게해야합니까? JPanel 문제 : java.lang.NullPointerException
ERROR (오류) :Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at hotelManagement.MainSystem.<init>(MainSystem.java:68)
at hotelManagement.MainSystem.main(MainSystem.java:129)
행 68 : getMainPanel().add(roomPanel, "Rooms");
전체 코드 :
MainSystem.Java :
package hotelManagement;
import java.awt.CardLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MainSystem extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
private JFrame mainFrame;
private JPanel mainPanel;
private static JPanel roomPanel;
private JPanel btnPanel;
private JButton btnRoom;
private JButton btnCustomer;
private JButton btnOrder;
private JButton btnSearch;
private CardLayout cLayout;
private JLabel lblUpdate;
public MainSystem(){
mainFrame = new JFrame("Hotel Management System");
mainFrame.setSize(500,300);
mainFrame.setLayout(new GridLayout(2,0));
btnRoom = new JButton("Room Editor");
btnRoom.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
getCLayout().show(getMainPanel(), "Orders");
System.out.println("You clicked Rooms");
}
});
btnCustomer = new JButton("Customer Editor");
btnOrder = new JButton("Order");
btnSearch = new JButton("Search");
lblUpdate = new JLabel("Instructions/details will go here.");
btnPanel = new JPanel();
btnPanel.add(btnRoom);
btnPanel.add(btnCustomer);
btnPanel.add(btnOrder);
btnPanel.add(btnSearch);
btnPanel.add(lblUpdate);
setMainPanel(new JPanel());
setCLayout(new CardLayout());
getMainPanel().setLayout(getCLayout());
getMainPanel().add(btnPanel, "Buttons");
getMainPanel().add(roomPanel, "Rooms");
mainFrame.add(getMainPanel());
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JFrame getMainFrame(){
return mainFrame;
}
public void setMainFrame(JFrame mainFrame){
this.mainFrame = mainFrame;
}
public CardLayout getCLayout(){
return cLayout;
}
public void setCLayout(CardLayout cLayout){
this.cLayout = cLayout;
}
public JPanel getMainPanel(){
return mainPanel;
}
public void setMainPanel(JPanel mainPanel){
this.mainPanel = mainPanel;
}
public JPanel getBtnPanel(){
return btnPanel;
}
public void setBtnRoom(JPanel btnPanel){
this.btnPanel = btnPanel;
}
public JPanel getRoomPanel() {
return roomPanel;
}
public static void setRoomPanel(JPanel roomPanel) {
MainSystem.roomPanel = roomPanel;
}
public static void main(String[] args) {
new MainSystem();
}
}
RoomSystem.Java
package hotelManagement;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;
public class RoomSystem extends MainSystem {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton btnEdit;
private JButton btnBack;
private JComboBox<String> roomType;
String[] roomArray = { "Penthouse", "Large Room", "Small Room" };
public RoomSystem() {
setRoomType(new JComboBox<>(roomArray));
btnEdit = new JButton("Create");
btnEdit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.out.println("You clicked Create");
}
});
btnBack = new JButton("Return");
btnBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.out.println("You clicked Back");
}
});
Label lblRoom= new Label("Room Type: ");
setRoomPanel(new JPanel());
getRoomPanel().setLayout(new GridBagLayout());
GridBagConstraints gridConst = new GridBagConstraints();
gridConst.gridx = 0;
gridConst.gridy = 0;
getRoomPanel().add(lblRoom, gridConst);
gridConst.gridx = 1;
gridConst.gridy = 0;
getRoomPanel().add(getRoomType(), gridConst);
gridConst.gridx = 0;
gridConst.gridy = 2;
getRoomPanel().add(btnEdit, gridConst);
gridConst.gridx = 1;
gridConst.gridy = 2;
getRoomPanel().add(btnBack, gridConst);
}
public JComboBox<String> getRoomType(){
return roomType;
}
public void setRoomType(JComboBox<String> roomType){
this.roomType = roomType;
}
}