title: NullPointerException in "AWT-EventQueue-0" java.lang
body: <p>Hey all I am making a flight booking system and having this error when I click a seat for booking <strong>"AWT-EventQueue-0" java.lang.NullPointerException</strong> I think there is a mistake with my 2D Object initialization... 
  PS: is there a way I can get rid of the <code>final</code> in front of <code>Seats[][] seats = new Seats[4][5];</code></p>
  
  <p>Here is my Seats Class:</p>
  
  <pre><code>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;
  }
  
  }
  </code></pre>
  
  <p>and below is my GUI:</p>
  
  <pre><code>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&lt;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 &lt; 4; i++) {
          char c= 'A';
          for ( int j = 0; j &lt; 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();
  }
  
  }
  </code></pre>
  
  <p>Thank you for reading and for your time!</p>