Buenas tardes compañeros, después del otro problema que conseguisteis ayudarme a solucionarlo, tengo otro un tanto mas visual.
//Añado botones de interacción con el usuario
        AddConexion = new JButton(new ImageIcon(MenuGUI.class.getResource("/com/sun/java/swing/plaf/windows/icons/agrega.png")));
        AddConexion.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                //Llamo a la clase "Añadir Conexión"
                try{
                    AñadirConexion.main(null);
                    //Compruebo que la ventana "Añadir Conexión" esta abierta y la cierro
                    /*if (EC.isEnabled()){
                        EC.dispose();
                    }*/
                }catch (Exception e1){
                    JOptionPane.showMessageDialog(null, e1);
                }
            }
        });
        AddConexion.setBounds(10, 40, 24, 24);
        getContentPane().add(AddConexion);
        btnEliminarConexion = new JButton("");
        btnEliminarConexion.setIcon(new ImageIcon(MenuGUI.class.getResource("/com/sun/java/swing/plaf/windows/icons/Cruz-roja.png")));
        btnEliminarConexion.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //Llamo a la clase "Eliminar conexión"
                try{
                    EliminarConexion.main(null);
                    //Compruebo que la ventana "Añadir Conexión" esta abierta y la cierro
                    /*if (AC.isEnabled()){
                        AC.dispose();
                    }*/
                }catch (Exception e1){
                    JOptionPane.showMessageDialog(null, e1);
                }
            }
        });
        btnEliminarConexion.setBounds(38, 40, 24, 24);
        getContentPane().add(btnEliminarConexion);Como pueden ver por el código, lo que trato de conseguir es que, cuando una ventana esté activa, si le doy a otra, automáticamente se cierre esta anterior (solo tengo 2 botones con ventanas).
No se como hacer el resto, ya que me da un error Null al proceder a su cierre y, me gustaría saber de que forma puedo lograr este resultado. He estado investigando y viendo por Google que hay que hacer esto.
public void windowActivated(WindowEvent e){
    setEnabled(true);
}Esto lo tengo en las clases JFrame para enviar una señal a JAVA diciéndole "Ventana Activa" para intentar ese efecto, pero sé que esta mal porque no funciona xDDD
El código de esa clase es este:
import java.awt.Color;
@SuppressWarnings("serial")
public class AñadirConexion extends JFrame {
    ConexionDB objConex;
    private JLabel lblUsuario, lblContraseña, lblHost, lblPuerto, lblBD, lblAlias;
    static public JTextField UsuarioField, HostField, PuertoField, BDField, AliasField;
    static public JPasswordField passwordField;
    private JButton btnGuardar, btnConectar, btnReset, btnSalir;
    public AñadirConexion() {
        initcomponents();
        objConex = new ConexionDB();
    }
    private void initcomponents() {
        //Propiedades del JFrame o Ventana
        setSize(new Dimension(400, 200));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
        setLocation(new Point(400, 250));
        getContentPane().setLayout(null);
        setTitle("Añadir Cliente");
        //Etiquetas para los cuadros de texto
        lblUsuario = new JLabel("Usuario");
        lblUsuario.setBounds(10, 11, 46, 14);
        getContentPane().add(lblUsuario);
        lblContraseña = new JLabel("Contraseña");
        lblContraseña.setBounds(206, 11, 77, 14);
        getContentPane().add(lblContraseña);
        lblHost = new JLabel("Host");
        lblHost.setBounds(10, 36, 46, 14);
        getContentPane().add(lblHost);
        lblPuerto = new JLabel("Puerto");
        lblPuerto.setBounds(206, 36, 46, 14);
        getContentPane().add(lblPuerto);
        lblBD = new JLabel("Nombre BD");
        lblBD.setBounds(10, 59, 77, 14);
        getContentPane().add(lblBD);
        lblAlias = new JLabel("Alias");
        lblAlias.setBounds(206, 59, 46, 14);
        getContentPane().add(lblAlias);
        //Cuadros de texto donde introducir datos
        UsuarioField = new JTextField();
        UsuarioField.setBounds(97, 8, 86, 20);
        getContentPane().add(UsuarioField);
        UsuarioField.setColumns(10);
        passwordField = new JPasswordField();
        passwordField.setBounds(292, 8, 86, 20);
        getContentPane().add(passwordField);
        HostField = new JTextField();
        HostField.setBounds(97, 33, 86, 20);
        getContentPane().add(HostField);
        HostField.setColumns(10);
        PuertoField = new JTextField();
        PuertoField.setBounds(292, 33, 86, 20);
        getContentPane().add(PuertoField);
        PuertoField.setColumns(10);
        BDField = new JTextField();
        BDField.setBounds(97, 56, 86, 20);
        getContentPane().add(BDField);
        BDField.setColumns(10);
        AliasField = new JTextField();
        AliasField.setBounds(292, 56, 86, 20);
        getContentPane().add(AliasField);
        AliasField.setColumns(10);
        //Botones de iteracción con el usuario      
        btnGuardar = new JButton("Guardar");
        btnGuardar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    EscribeFichero.main(null);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
        btnGuardar.setBounds(10, 87, 91, 23);
        getContentPane().add(btnGuardar);
        btnConectar = new JButton("Conectar");
        btnConectar.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        objConex.conectar();
                        //Compruebo si la conexión esta activa
                        if (!ConexionDB.getConex().isClosed()){
                            MenuGUI.EstadoConx.setText("¡Conectado!");
                            MenuGUI.EstadoConx.setForeground(Color.GREEN);
                        }else{
                            MenuGUI.EstadoConx.setText("Error al conectar");
                        }
                    } catch (SQLException e1) {
                        JOptionPane.showInputDialog(e1, "No se pudo  establecer conexión");
                    }
                }
        });
        btnConectar.setBounds(10, 137, 91, 23);
        getContentPane().add(btnConectar);
        btnReset = new JButton("Resetear Datos");
        btnReset.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btnReset.setBounds(111, 137, 128, 23);
        getContentPane().add(btnReset);
        btnSalir = new JButton("Salir");
        btnSalir.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //Cierro la ventana limpiando el objeto en la memoria
                dispose();
            }
        });
        btnSalir.setBounds(287, 137, 91, 23);
        getContentPane().add(btnSalir);
    }
    public void windowActivated(WindowEvent e){
        setEnabled(true);
    }
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    AñadirConexion frame = new AñadirConexion();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}¿Algún consejo?



