Foros del Web » Programación para mayores de 30 ;) » Java »

¿JFrame activo?

Estas en el tema de ¿JFrame activo? en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/07/2014, 15:19
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
¿JFrame activo?

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(nulle1);
                }
            }
        });
        
AddConexion.setBounds(10402424);
        
getContentPane().add(AddConexion); 
Código PHP:
import java.awt.Color;

@
SuppressWarnings("serial")
public class 
AñadirConexion extends JFrame {
    
ConexionDB objConex;
    
    private 
JLabel lblUsuariolblContraseñalblHostlblPuertolblBDlblAlias;
    static public 
JTextField UsuarioFieldHostFieldPuertoFieldBDFieldAliasField;
    static public 
JPasswordField passwordField;
    private 
JButton btnGuardarbtnConectarbtnResetbtnSalir;
    
    public 
AñadirConexion() {
        
initcomponents();
        
objConex = new ConexionDB();
    }

    private 
void initcomponents() {
        
//Propiedades del JFrame o Ventana
        
setSize(new Dimension(400200));
        
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
setVisible(true);
        
setResizable(false);
        
setLocation(new Point(400250));
        
getContentPane().setLayout(null);
        
setTitle("Añadir Cliente");
        
        
//Etiquetas para los cuadros de texto
        
lblUsuario = new JLabel("Usuario");
        
lblUsuario.setBounds(10114614);
        
getContentPane().add(lblUsuario);
        
        
lblContraseña = new JLabel("Contraseña");
        
lblContraseña.setBounds(206117714);
        
getContentPane().add(lblContraseña);
        
        
lblHost = new JLabel("Host");
        
lblHost.setBounds(10364614);
        
getContentPane().add(lblHost);
        
        
lblPuerto = new JLabel("Puerto");
        
lblPuerto.setBounds(206364614);
        
getContentPane().add(lblPuerto);
        
        
lblBD = new JLabel("Nombre BD");
        
lblBD.setBounds(10597714);
        
getContentPane().add(lblBD);
        
        
lblAlias = new JLabel("Alias");
        
lblAlias.setBounds(206594614);
        
getContentPane().add(lblAlias);
        
        
//Cuadros de texto donde introducir datos
        
UsuarioField = new JTextField();
        
UsuarioField.setBounds(9788620);
        
getContentPane().add(UsuarioField);
        
UsuarioField.setColumns(10);
        
        
passwordField = new JPasswordField();
        
passwordField.setBounds(29288620);
        
getContentPane().add(passwordField);
        
        
HostField = new JTextField();
        
HostField.setBounds(97338620);
        
getContentPane().add(HostField);
        
HostField.setColumns(10);
        
        
PuertoField = new JTextField();
        
PuertoField.setBounds(292338620);
        
getContentPane().add(PuertoField);
        
PuertoField.setColumns(10);
        
        
BDField = new JTextField();
        
BDField.setBounds(97568620);
        
getContentPane().add(BDField);
        
BDField.setColumns(10);
        
        
AliasField = new JTextField();
        
AliasField.setBounds(292568620);
        
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(10879123);
        
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(101379123);
        
getContentPane().add(btnConectar);
        
        
btnReset = new JButton("Resetear Datos");
        
btnReset.addActionListener(new ActionListener() {
            public 
void actionPerformed(ActionEvent arg0) {
                
            }
        });
        
btnReset.setBounds(11113712823);
        
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(2871379123);
        
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.
  #2 (permalink)  
Antiguo 31/07/2014, 06:09
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: ¿JFrame activo?

¿En serio nadie sabe?
  #3 (permalink)  
Antiguo 31/07/2014, 09:18
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
Respuesta: ¿JFrame activo?

Dentro de tu boton, en ese switch puedes poner

Cita:
if ( ventana actual==true) //si la ventana actual se abrio
segunaVentana.setVisible(false);//cerrar la segunda
Es un error grafico. Trata de solucionarlo.
  #4 (permalink)  
Antiguo 01/08/2014, 04:26
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: ¿JFrame activo?

Cita:
Iniciado por dacroma Ver Mensaje
Dentro de tu boton, en ese switch puedes poner

Cita:
if ( ventana actual==true) //si la ventana actual se abrio
segunaVentana.setVisible(false);//cerrar la segunda
Es un error grafico. Trata de solucionarlo.
El problema que me da es un Null, con lo cual supongo que estoy llamando a un puntero inexistente...
  #5 (permalink)  
Antiguo 01/08/2014, 11:58
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
Respuesta: ¿JFrame activo?

Yo lo probe asi.

Cita:
/*
En este caso solo boy a crear 2 objetos de tipo JFrame
*/
JFrame ventana1=new JFrame("titulo"),ventana2=new JFrame("titulo2");
ventana1.add(TODO LO QUE NESECITES AGREGAR);
ventana2.add(TODO LO QUE NESECITES AGREGAR);
ventana1.setVisible(true);


if(ventana2.esVisible()==true)
{
ventana1.setViseble(false);
}


//y a mi me funciona perfectamente.
//trata de hacerlo simple.
  #6 (permalink)  
Antiguo 16/08/2014, 14:29
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: ¿JFrame activo?

Vale, voy a probar a ver, pero en vez de "setVisible(true/false);" prefiero usar "Dispose();" para liberar memoria de forma manual y no tener que esperar al recolector de basura de JAVA.

Etiquetas: clase, jframe, objeto, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:01.