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?