Problemas com JFrames

Oi pessoal,

Eu estou com o seguinte problema: fiz uma classe em java que chama um menu de opções onde o usuário pode digitar uma opção pra inserir ou consultar no banco de dados. Quando ele clica em uma das opções, abre uma janela pra ele poder fazer a ação desejada (inserir ou consultar os dados). O problema é que quando ele fecha essa nova janela que se abriu, a janela do menu, que ja estava aberta,aparece pra ele, possibilitando que ele digite uma outra opção. O problema é que quando ele digita uma outra opção, a nova janela não abre, ou seja, ele só pode executar uma opção por compilação.
Vou postar o codigo pra vocês verem.

package trabalhoextra;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Dados extends JFrame{
JButton botao;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
String result;
	public Dados(){		
		super("Menu de opções");
		Container tela = getContentPane();
		tela.setLayout(null);
		l1 = new JLabel("1 > Inserir Pedidos "); 
		l2 = new JLabel("2 > Inserir Clientes ");
		l3 = new JLabel("3 > Consultar Pedidos ");
		l4 = new JLabel("4 > Consultar Clientes ");
		l5 = new JLabel("Opção"); t1 = new JTextField(10);		
		l1.setBounds(20,30,150,20); 
		l2.setBounds(20,55,150,20);
		l3.setBounds(20,80,150,20);
		l4.setBounds(20,105,150,20);
		l5.setBounds(20,130,60,20);t1.setBounds(60,130,50,20); 
		botao = new JButton("OK"); botao.setBounds(110,170,100,20);
		tela.add(l1);
		tela.add(l2);
		tela.add(l3);
		tela.add(l4);
		tela.add(l5);tela.add(t1);
		tela.add(botao);
		botao.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				try {
					String url = "jdbc:odbc:BancoJava";
					String usuario = "";
					String senha = "";
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
					Connection con;
					con = DriverManager.getConnection(url,usuario,senha);
					if (t1.getText().equals("1")){
						t1.setText("");
						t1.grabFocus();						
					}
					if (t1.getText().equals("2")){
						t1.setText("");
						t1.grabFocus();
						InsereClientes janela2 = new InsereClientes();
						janela2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
					}
					if (t1.getText().equals("3")){
						t1.setText("");
						t1.grabFocus();
						new ConsultaPedido();
					}
					if (t1.getText().equals("4")){						
						t1.setText("");
						t1.grabFocus();
						ConsultaClientes janela4 = new ConsultaClientes();
						janela4.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
					}
				}
				catch(Exception event) {
					JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
				}
					}});
				setSize(250,270);
				setVisible(true);
				setLocationRelativeTo(null);				
	}
	public static void main(String args[]){
		Dados app = new Dados();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
	}
	private class ConsultaClientes extends JFrame{
		public ConsultaClientes(){
		super("Consulta de Registro");		
		Container tela = getContentPane();
		tela.setLayout(null);
		l1 = new JLabel("Código: "); t1 = new JTextField(5);
		l2 = new JLabel("CPF: "); t2 = new JTextField(50);
		l3 = new JLabel("Nome: "); t3 = new JTextField(50);
		l4 = new JLabel("Telefone: "); t4 = new JTextField(20);
		l5 = new JLabel("Rua: "); t5 = new JTextField(50);
		l6 = new JLabel("Número: "); t6 = new JTextField(5);
		l1.setBounds(20,30,80,20); t1.setBounds(100,30,50,20);
		l2.setBounds(20,55,80,20); t2.setBounds(100,55,150,20);
		l3.setBounds(20,80,80,20); t3.setBounds(100,80,300,20);
		l4.setBounds(20,105,80,20);t4.setBounds(100,105,100,20);
		l5.setBounds(20,130,80,20);t5.setBounds(100,130,300,20);
		l6.setBounds(20,155,80,20);t6.setBounds(100,155,50,20);
		botao = new JButton("Consultar Registro"); botao.setBounds(110,190,150,20);
		tela.add(l1);tela.add(t1);
		tela.add(l2);tela.add(t2);
		tela.add(l3);tela.add(t3);
		tela.add(l4);tela.add(t4);
		tela.add(l5);tela.add(t5);
		tela.add(l6);tela.add(t6);
		tela.add(botao);
		t2.disable();
		t3.disable();
		t4.disable();
		t5.disable();
		t6.disable();
		botao.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				try {
					String url = "jdbc:odbc:BancoJava";
					String usuario = "";
					String senha = "";
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
					Connection con;
					con = DriverManager.getConnection(url,usuario,senha);
					Statement st = con.createStatement();
					ResultSet rs = st.executeQuery("SELECT * FROM Cliente WHERE	IdCliente="+t1.getText());
					rs.next();
					t2.setText(rs.getString("CPF"));
					t3.setText(rs.getString("Nome"));
					t4.setText(rs.getString("Telefone"));
					t5.setText(rs.getString("Rua"));					
					t6.setText(rs.getString("Numero"));
					st.close();
					con.close();
				}
				catch(Exception event) {
					JOptionPane.showMessageDialog(null,"Pessoa não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);			
					t1.setText("");
					t1.grabFocus();
				}
					}});
				setSize(450, 295);
				setVisible(true);
				setLocationRelativeTo(null);
				setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		}		
	}
	private class ConsultaPedido extends JFrame{
		JLabel l;
		JTextField t;
		JButton b;
		Inicial janela;
		public ConsultaPedido(){
		super("Consulta de Pedidos" );
		Container tela = getContentPane();
		setLayout(null);
		l = new JLabel("Codigo do Cliente "); l.setBounds(105,20,150,20);
		t = new JTextField(50); t.setBounds(120,45,50,20);
		b = new JButton("Exibir Relatório"); b.setBounds(80,80,150,20);
		tela.add(l);tela.add(t);tela.add(b);
		b.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e) {
		janela = new Inicial();
		janela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		janela.setVisible(true);
		}});
		setSize(300,160);
		setVisible(true);
		setLocationRelativeTo(null);
		}
	private class Inicial extends JFrame{
		private Connection con;
		private JTable tabela;
		private Inicial(){
		super("Listagem de Pedidos" );
		setSize(400,300);
		setLocationRelativeTo(null);
		String url = "jdbc:odbc:BancoJava";
		String usuario = "";
		String senha = "";
		try{			
			Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
			con = DriverManager.getConnection(url, usuario, senha);
		}
		catch (Exception e){			
			JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
		}
		buscaTabela();
		}
		private void buscaTabela(){
			Statement st;
			ResultSet res;
			try {
				Vector cabecalho = new Vector();
				Vector linhas = new Vector();
				st = con.createStatement();
				res = st.executeQuery("SELECT Pedidos.CodPedidos,Pedidos.DataPed,Pedidos.Valor FROM Pedidos,Cliente WHERE Pedidos.IdCliente="+t.getText());
				res.next();
				ResultSetMetaData rsmd = res.getMetaData();
				for (int i = 1; i <= rsmd.getColumnCount(); ++i)
					cabecalho.addElement(rsmd.getColumnName(i));
				do
				{
					linhas.addElement(proximaLinha(res,rsmd));
				}
				while (res.next());
				tabela = new JTable(linhas,cabecalho);
				JScrollPane scroller = new JScrollPane( tabela );
				getContentPane().add(scroller, BorderLayout.CENTER);
				validate();
				st.close();
			}
			catch (SQLException sqlex) {
			}
		}
		private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd ){			
			Vector LinhaAtual = new Vector();
			try{
				for (int i = 1; i <= rsmd.getColumnCount(); ++i)
				switch(rsmd.getColumnType(i)){
					case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
					break;
					case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
					break;
					case Types.DOUBLE: LinhaAtual.addElement(new Long(rs.getLong(i)));
					break;
					case Types.INTEGER: LinhaAtual.addElement(new Long(rs.getLong(i)));
					break;
				}
			}
			catch(SQLException e) {
			}
			return LinhaAtual;
		}
	}
		
	}
	private class InsereClientes extends JFrame{
		public InsereClientes(){
		super("Inclusão de Cliente");		
		Container tela = getContentPane();
		tela.setLayout(null);
		l1 = new JLabel("Código: "); t1 = new JTextField(5);
		l2 = new JLabel("CPF: "); t2 = new JTextField(50);
		l3 = new JLabel("Nome: "); t3 = new JTextField(50);
		l4 = new JLabel("Telefone: "); t4 = new JTextField(20);
		l5 = new JLabel("Rua: "); t5 = new JTextField(50);
		l6 = new JLabel("Número: "); t6 = new JTextField(5);
		l1.setBounds(20,30,80,20); t1.setBounds(100,30,50,20);
		l2.setBounds(20,55,80,20); t2.setBounds(100,55,150,20);
		l3.setBounds(20,80,80,20); t3.setBounds(100,80,300,20);
		l4.setBounds(20,105,80,20);t4.setBounds(100,105,100,20);
		l5.setBounds(20,130,80,20);t5.setBounds(100,130,300,20);
		l6.setBounds(20,155,80,20);t6.setBounds(100,155,50,20);
		botao = new JButton("Inserir Registro"); botao.setBounds(110,190,150,20);
		tela.add(l1);tela.add(t1);
		tela.add(l2);tela.add(t2);
		tela.add(l3);tela.add(t3);
		tela.add(l4);tela.add(t4);
		tela.add(l5);tela.add(t5);
		tela.add(l6);tela.add(t6);
		tela.add(botao);
		botao.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				try {
					String url = "jdbc:odbc:BancoJava";
					String usuario = "";
					String senha = "";
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
					Connection con;
					con = DriverManager.getConnection(url,usuario,senha);
					Statement st = con.createStatement();
					st.execute("INSERT INTO Cliente Values("+t1.getText()+",'"+t2.getText()+"','"+t3.getText()+"',"+t4.getText()+",'"+t5.getText()+"',"+t6.getText()+")");						
					st.close();
					con.close();
				}
				catch(Exception event) {
					JOptionPane.showMessageDialog(null,"Erro ao Inserir Registro","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);						
					t1.grabFocus();
				}
					}});
				setSize(450, 295);
				setVisible(true);
				setLocationRelativeTo(null);
				
		}		
	}
}