I have two views : test1 and test2
Switching from test1 to test 2 works fine, but when I switch back from test2 the contentPanel is empty. This is my code. Can someone point out what I'm doing wrong?
test1
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
public class test1 extends JFrame {
JPanel contentPane;
/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                test1 frame = new test1();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
/**
 * Create the frame.
 */
public test1() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
    JButton btnView = new JButton("View2");
    contentPane.add(btnView, BorderLayout.CENTER);
    btnView.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            contentPane.removeAll();
            contentPane.invalidate();
            test2 obj=new test2();
            obj.contentPane.setVisible(true);
            contentPane.add(obj.contentPane);
            ((JPanel)contentPane).revalidate();
            contentPane.repaint();          }
    });
}
}
test2
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
public class test2 extends JFrame {
JPanel contentPane;
/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                test2 frame = new test2();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
/**
 * Create the frame.
 */
public test2() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);
    JLabel lblThisIsView = new JLabel("this is view 2!");
    lblThisIsView.setBounds(178, 107, 110, 14);
    contentPane.add(lblThisIsView);
    JButton btnView = new JButton("View 1!");
    btnView.setBounds(168, 161, 89, 23);
    contentPane.add(btnView);
    btnView.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            contentPane.removeAll();
            contentPane.invalidate();
            test1 obj=new test1();
            obj.contentPane.setVisible(true);
            contentPane.add(obj.contentPane);
            ((JPanel)contentPane).revalidate();
            contentPane.repaint();
        }
    });
}
    }
 
     
    