我正在上课的酒店管理软件上工作,我的代码遇到了一些问题。此时,我只是想将我在单独的类中创建的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)
注意:错误发生在“ jpanel.add(“ Room”,room.getRoomPanel());“行上
代码:HotelSystem.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();
}
}
RoomSystem.java
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;
}
}
jpanel.add("Room", room.getRoomPanel());
您从未初始化 room
RoomSystem room;
即使您确实对其进行了初始化RoomSystem room = new RoomSystem()
,您的RoomSystem
班级仍然还有另一个问题。您已经遮蔽了阴影roomPanel
,因此在尝试调用时,类成员为null
getRoomPanel()
。在您的构造函数中,更改
// shadowing the class field roomPanel
JPanel roomPanel = new JPanel(new FlowLayout());
to
roomPanel = new JPanel(new FlowLayout());
当我试图调用actionPerformed方法中的panel2时,我得到了NullPointerException。请帮我摆脱这愚蠢的prblm。 action事件没有附加在panel2中,这是导致此异常的原因吗?
我试图让两个不同的选择框同时工作,但是我在initialize方法中得到一个nullpointer错误。这有点奇怪,因为我正在尝试初始化选择框中的内容,但IDE却给了我一个nullpointer异常。 这是我的密码 它还告诉我,在处的主类中有一个错误 sample.fxml文件是一个不同的场景,基本上它只是一个开始场景,用户可以在两个不同的场景中选择要转到的场景
下面是用eclipse IDE编写的Java代码... 线程“main”java.lang.NullPointerException在compile.execute.main(execute.java:17)中出现异常 你能告诉我如何解决这个错误吗?
问题内容: 使用Java CardLayout时是否可以更改Jpanels的大小? 问题答案: 拍摄,像这样,在组件(这里是JLabel而不是JPanel)设置了preferredSize,然后将其放置在使用适当布局的另一个JPanel中,这里是GridBagLayout,默认设置会将组件居中,并使用GridBagLayout添加使用面板将JPanel转换为CardLayout ::
文件“icon.png”与类在同一个文件夹中。但是,如果我只是使用(新图像(icon.png)),然后它说java.lang.IllegalArgumentExcoop:无效的URL:无效的URL或资源未找到。但是现在添加getClass(). getResources...我得到了这个错误。这是我的代码: 下面是错误: 请帮我修一下。提前谢谢!
问题内容: 我是Java的初学者,我正在尝试创建一个在光标所在的位置绘制一个矩形的应用程序。我已经完成了所有操作,但无法获得重绘的信息。如果没有重绘,则矩形仅绘制一次,仅此而已。使用重新绘制,它可以很好地编译,但是当我运行它时,每次移动鼠标时,都会出现这个大错误。 所以,有人可以帮我吗? 问题答案: 希望代码示例中的注释能够告诉您您在代码中做错了什么:-),否则总有理由提出您的疑问…