简体   繁体   English

“ AWT-EventQueue-0”中的NullPointerException java.lang

[英]NullPointerException in “AWT-EventQueue-0” java.lang

Hey all I am making a flight booking system and having this error when I click a seat for booking "AWT-EventQueue-0" java.lang.NullPointerException I think there is a mistake with my 2D Object initialization... PS: is there a way I can get rid of the final in front of Seats[][] seats = new Seats[4][5]; 嘿,我正在制作航班预订系统,当我单击座位以预订“ AWT-EventQueue-0” java.lang.NullPointerException时出现此错误,我认为我的2D对象初始化存在错误... PS:是否存在我可以摆脱在Seats[][] seats = new Seats[4][5];前面的final Seats[][] seats = new Seats[4][5];

Here is my Seats Class: 这是我的座位类:

public class Seats {

private int row_number;
private boolean booked;
private Passenger myPassenger;
private String seat_name;
private String type;
private int column_number;
private long booking_nr;

public Seats(){
    myPassenger = new Passenger();
    booked = false;
}

public boolean isBooked() {
    return booked;
}

public void setBooked(boolean booked) {
    this.booked = booked;
}

}

and below is my GUI: 下面是我的GUI:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
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;
import javax.swing.border.EmptyBorder;

public class Book_GUI extends JFrame {

//private EconomyClass eco;
private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Book_GUI frame = new Book_GUI();
                frame.setTitle("Economy Class");
                frame.setVisible(true);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Book_GUI() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);

    int left = 3;
    int middle = 3;
    int right = 4;

    String[] singleRowAll = new String [left+middle+right];

    for(int i = 1;i<singleRowAll.length;i++){singleRowAll[i] = "";}
    singleRowAll[0] = "Window";
    singleRowAll[left-1] = "Aisle";
    singleRowAll[left] = "Aisle";
    singleRowAll[left+middle-1] = "Aisle";
    singleRowAll[left+middle] = "Aisle";
    singleRowAll[left+middle+right-1] = "Window";


    //eco = new EconomyClass(4,5,3,3,4);

    final Seats[][] seats = new Seats[4][10];
    for ( int i = 0; i < 4; i++) {
        char c= 'A';
        for ( int j = 0; j < 10; j++) {
            final int x = i;
            final int z = j;
        final JButton btnBookFlight = new JButton(" " + (i+1) + c++ + " " + singleRowAll[j] );
            btnBookFlight.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    if(seats[x][z].isBooked()){btnBookFlight.setBackground(Color.GREEN);}

                    seats[x][z].setBooked(true);

                    //JButton button = (JButton)arg0.getSource();
                    //button.setBackground(Color.RED);
                //  btnBookFlight.setBackground(Color.RED);
                    btnBookFlight.setOpaque(true);
                }
            });
            contentPane.add(btnBookFlight);
        }
    }

    contentPane.setLayout(new GridLayout(4, 10));
    pack();
}

}

Thank you for reading and for your time! 感谢您的阅读和宝贵的时间!

You are creating a new seat array, using new Seats[4][5] , but that simply makes an empty array of references. 您正在使用new Seats[4][5]创建一个新的席位数组,但这只是创建一个空引用数组。 you need to actually create a new seat that goes in each place in the array. 您实际上需要创建一个在阵列中每个位置都可以使用的新座椅。

You are not initializing the Seats[][] array. 您没有初始化Seats [] []数组。 Try replacing the Constructor of Book_GUI.java with: 尝试将Book_GUI.java的构造方法替换为:

public Seats[][] seats = new Seats[4][10]; 

public Book_GUI() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);

    int left = 3;
    int middle = 3;
    int right = 4;

    String[] singleRowAll = new String[left + middle + right];

    for (int i = 1; i < singleRowAll.length; i++) {
        singleRowAll[i] = "";
    }
    singleRowAll[0] = "Window";
    singleRowAll[left - 1] = "Aisle";
    singleRowAll[left] = "Aisle";
    singleRowAll[left + middle - 1] = "Aisle";
    singleRowAll[left + middle] = "Aisle";
    singleRowAll[left + middle + right - 1] = "Window";

    // eco = new EconomyClass(4,5,3,3,4);

            //Delete this line:
    //final Seats[][] seats = new Seats[4][5];

    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 5; j++) {
            seats[i][j] = new Seats();
        }
    }

    for (int i = 0; i < 4; i++) {
        char c = 'A';
        for (int j = 0; j < 10; j++) {
            final int x = i;
            final int z = j;
            final JButton btnBookFlight = new JButton(" " + (i + 1) + c++
                    + " " + singleRowAll[j]);
            btnBookFlight.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    if (seats[x][z].isBooked()) {
                        btnBookFlight.setBackground(Color.GREEN);
                    }

                    seats[x][z].setBooked(true);

                    // JButton button = (JButton)arg0.getSource();
                    // button.setBackground(Color.RED);
                    // btnBookFlight.setBackground(Color.RED);
                    btnBookFlight.setOpaque(true);
                }
            });
            contentPane.add(btnBookFlight);
        }
    }

    contentPane.setLayout(new GridLayout(4, 10));
    pack();
}

This should help :) 这应该有帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Java:线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException - Java: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException Java-线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException - Java - Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException Getter和Setter Java AWT-EventQueue-0 java.lang.NullPointerException - Getter and Setter Java AWT-EventQueue-0 java.lang.NullPointerException 线程““ AWT-EventQueue-0””中的Java异常java.lang.NullPointerException - Java Exception in thread '“AWT-EventQueue-0”' java.lang.NullPointerException java中的“AWT-EventQueue-0”java.lang.NullPointerException - “AWT-EventQueue-0” java.lang.NullPointerException in java 线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException Java - Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException Java 线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException? Java的 - Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException? Java 如何处理“ AWT-EventQueue-0” java.lang.NullPointerException? - How to handle “AWT-EventQueue-0” java.lang.NullPointerException? 线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException - Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException eclipse:线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException - eclipse : Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM