Java JPanel和CardLayout出现NullPointerException错误

Java JPanel和CardLayout出现NullPointerException错误,java,swing,null,jpanel,cardlayout,Java,Swing,Null,Jpanel,Cardlayout,我正在为班级开发酒店管理软件,我的代码遇到了一些问题。在这一点上,我只是尝试将我在单独的类中创建的JPanel添加到我的主gui中。任何帮助都将不胜感激~谢谢 Exception in thread "main" java.lang.NullPointerException at java.awt.Container.addImpl(Unknown Source) at java.awt.Container.add(Unknown Source) at hotelMana

我正在为班级开发酒店管理软件,我的代码遇到了一些问题。在这一点上,我只是尝试将我在单独的类中创建的JPanel添加到我的主gui中。任何帮助都将不胜感激~谢谢

Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at hotelManage.HotelSystem.showGUI(HotelSystem.java:75)
    at hotelManage.HotelSystem.<init>(HotelSystem.java:27)
    at hotelManage.HotelSystem.main(HotelSystem.java:115)
RoomSystem.java

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class HotelSystem extends JFrame implements ActionListener {
    /**
     * 
     */
    private static final long serialVersionUID = 1840835913045151061L;

    private JFrame mainFrame;
    private JPanel mainPanel;
    private JButton btnRoom;
    private JButton btnCustomer;
    private JButton btnOrder;
    private JButton btnSearch;
    RoomSystem room;

    //RoomSystem room = new RoomSystem();


    public HotelSystem(){
        prepareGUI();
        showGUI();
        registerListeners();


    }

    private void prepareGUI(){
        mainFrame = new JFrame("Hotel Management System");
        mainFrame.setSize(500,500);
        mainFrame.setLayout(new GridLayout(1,1));

        btnRoom = new JButton("Room Editor");
        btnCustomer = new JButton("Customer Editor");
        btnOrder = new JButton("Order");
        btnSearch = new JButton("Search");

        //main panel
        mainPanel = new JPanel();
        mainPanel.setLayout(new FlowLayout());

        mainFrame.add(mainPanel);
        mainFrame.setVisible(true);




    }

    private void showGUI(){
        final JPanel jpanel = new JPanel();
        jpanel.setBackground(Color.CYAN);
        jpanel.setSize(300,300);

        CardLayout cLayout = new CardLayout();
        cLayout.setHgap(5);
        cLayout.setVgap(5);
        jpanel.setLayout(cLayout);



        JPanel btnPanel = new JPanel(new FlowLayout());
        btnPanel.add(btnRoom);
        btnPanel.add(btnCustomer);
        btnPanel.add(btnOrder);
        btnPanel.add(btnSearch);
        jpanel.add("Button", btnPanel);
        jpanel.add("Room", room.getRoomPanel());

        mainPanel.add(jpanel);
        mainPanel.setVisible(true);  


    }

    public void registerListeners(){
        //register all buttons to self
        btnRoom.addActionListener(this);
        btnCustomer.addActionListener(this);
        btnOrder.addActionListener(this);
        btnSearch.addActionListener(this);

    } // end registerListeners

    public void actionPerformed(ActionEvent e){
        System.out.println(e.getActionCommand());
        //check all button presses and send
        //control to appropriate methods
       if (e.getSource() == btnRoom){

        } else if (e.getSource() == btnCustomer){

        } else if (e.getSource() == btnOrder){

        } else if (e.getSource() == btnSearch){

        } else {
            //lblOutput.setText("something went wrong");
        } // end if


    } // end actionPerformed


    public static void main(String[] args) {
        new HotelSystem();

    }


}
import java.awt.*;

import javax.swing.*;



public class RoomSystem {


    //private JTextField roomName;
    private JButton btnEdit;
    private JPanel roomPanel;
    //private JButton roomCancel;

    //array here

    public RoomSystem(){
        btnEdit = new JButton("Create");

        JPanel roomPanel = new JPanel(new FlowLayout());
        roomPanel.add(btnEdit);


        roomPanel.setVisible(true);

    }



    public JPanel getRoomPanel() {
        return roomPanel;
    }


    public void setRoomPanel(JPanel roomPanel) {
        this.roomPanel = roomPanel;
    }




}
您从未初始化过
room

RoomSystem room;
即使您确实初始化了它
RoomSystem room=new RoomSystem()
,您的
RoomSystem
类中仍然存在另一个问题。您已经隐藏了
roomPanel
,因此当您尝试调用
getRoomPanel()
时,类成员为null。在构造函数中,更改

// shadowing the class field roomPanel
JPanel roomPanel = new JPanel(new FlowLayout());  

to 

roomPanel = new JPanel(new FlowLayout());
您从未初始化过
room

RoomSystem room;
即使您确实初始化了它
RoomSystem room=new RoomSystem()
,您的
RoomSystem
类中仍然存在另一个问题。您已经隐藏了
roomPanel
,因此当您尝试调用
getRoomPanel()
时,类成员为null。在构造函数中,更改

// shadowing the class field roomPanel
JPanel roomPanel = new JPanel(new FlowLayout());  

to 

roomPanel = new JPanel(new FlowLayout());
您从未初始化过
room

RoomSystem room;
即使您确实初始化了它
RoomSystem room=new RoomSystem()
,您的
RoomSystem
类中仍然存在另一个问题。您已经隐藏了
roomPanel
,因此当您尝试调用
getRoomPanel()
时,类成员为null。在构造函数中,更改

// shadowing the class field roomPanel
JPanel roomPanel = new JPanel(new FlowLayout());  

to 

roomPanel = new JPanel(new FlowLayout());
您从未初始化过
room

RoomSystem room;
即使您确实初始化了它
RoomSystem room=new RoomSystem()
,您的
RoomSystem
类中仍然存在另一个问题。您已经隐藏了
roomPanel
,因此当您尝试调用
getRoomPanel()
时,类成员为null。在构造函数中,更改

// shadowing the class field roomPanel
JPanel roomPanel = new JPanel(new FlowLayout());  

to 

roomPanel = new JPanel(new FlowLayout());
如果有助于解决问题,请给出答案。如果有助于解决问题,请给出答案。如果有助于解决问题,请给出答案。如果有助于解决问题,请给出答案。