title: Adding JPanels from other classes to the cardLayout
body: <p>I've got 3 windows in 3 separate classes and I would like to use cardLayout so that when you click the next button, the next window will appear. How do I add JPanels containing different elements to one cardLayout? This is the first window: (the only difference is the background though - but it represents the idea of how I got it actually)</p>
  
  <pre><code>public class Window1 extends JPanel implements ActionListener {
  
  static CardLayout cardLayout = new CardLayout();
  
  public Window1() {
     init();
  }
  
  private void init() {
      JPanel jp = new JPanel(new BorderLayout());
      JPanel jp2 = new Window2();
      //JPanel jp3 = new Window3();
      JLabel textLabel = new JLabel("Window1");
      jp.setBackground(Color.GREEN);
      jp.add(textLabel, BorderLayout.CENTER);
      JButton nextButton = new JButton("NEXT");
      nextButton.setActionCommand("next");
      nextButton.addActionListener(this);
      jp.add(nextButton, BorderLayout.EAST);
      setLayout(cardLayout);
      add(jp, "string");
      add(jp2, "string");
      //add(jp3, "string");
  }
  
  public void actionPerformed(ActionEvent e) {            
      if (e.getActionCommand().equalsIgnoreCase("next")) {
      // go to the next window
          cardLayout.next(this);
      }
  }
  
  private static void createAndShowGUI() {        
        JFrame frame = new JFrame("test");
        frame.getContentPane().setLayout(Window1.cardLayout);
        frame.getContentPane().add(new Window1(), "Center");
        frame.getContentPane().add(new Window2(), "Center");
        frame.getContentPane().add(new Window3(), "Center");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(550, 450);
        frame.setVisible(true); 
  }
  
  
  public static void main(String[] args) {
      java.awt.EventQueue.invokeLater(new Runnable() {
          public void run() {
              createAndShowGUI();
          }           
      });
  }
  }
  </code></pre>
  
  <p>The second window:</p>
  
  <pre><code>public class Window2 extends JPanel implements ActionListener {
  
  //static CardLayout cardLayout = new CardLayout();
  
  public Window2() {
     init();
  }
  
  private void init() {
      setLayout(new BorderLayout());
      JLabel textLabel = new JLabel("Window2");
      setBackground(Color.RED);
      add(textLabel, BorderLayout.CENTER);
      JButton nextButton = new JButton("NEXT");
      nextButton.setActionCommand("next");
      nextButton.addActionListener(this);
      add(nextButton, BorderLayout.EAST);
      //setLayout(cardLayout);
      //JPanel jp3 = new Window3();
      //add(jp3, "string");
  }
  
  public void actionPerformed(ActionEvent e) {            
      if (e.getActionCommand().equalsIgnoreCase("next")) {
      // go to the next window??
          System.out.println("window2");
          Window1.cardLayout.next(this);
      }
  }
  
  }
  </code></pre>
  
  <p>And the last one:</p>
  
  <pre><code>public class Window3 extends JPanel implements ActionListener {
  
  public Window3() {
     init();
  }
  
  private void init() {
      setLayout(new BorderLayout());
      JLabel textLabel = new JLabel("Window3");
      setBackground(Color.BLUE);
      add(textLabel, BorderLayout.CENTER);
      JButton nextButton = new JButton("NEXT");
      nextButton.setActionCommand("next");
      nextButton.addActionListener(this);
      add(nextButton, BorderLayout.EAST);
  }
  
  public void actionPerformed(ActionEvent e) {            
      if (e.getActionCommand().equalsIgnoreCase("next")) {
      // go to the next window
      //  Window1.cardLayout.next(this);
      }
  }
  
  }
  </code></pre>