Buenas noches compañeros, estoy realizando un programa algo complejo y me he visto con un problema que no se como resolver.
Adjunto el código y explico lo que trato de conseguir:
Código PHP:
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);
Código PHP:
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();
}
}
});
}
}
Explico: Trato de hacer que, al invocar una ventana JFrame, si pulso un boton que invoca otra ventana, automaticamente la ventana anterior se cierre.
Sé que me falta algo, pero realmente no se como solucionarlo y necesito consejo.