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

JFrame llama a JDialog, el cual no responde

Estas en el tema de JFrame llama a JDialog, el cual no responde en el foro de Java en Foros del Web. hola!! tengo un JFrame en el cual al apretar un JButton aparece un JDialog modal. No se por qué soy incapaz de que el JDialog ...
  #1 (permalink)  
Antiguo 21/06/2007, 04:17
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
JFrame llama a JDialog, el cual no responde

hola!!

tengo un JFrame en el cual al apretar un JButton aparece un JDialog modal.

No se por qué soy incapaz de que el JDialog haga cualquier cosa al apretarle un JButton que tiene.

El código del JFrame es este:

Código PHP:
public class paginaRegistro extends JDialog{
    
    private 
Container contenido;
    private 
JLabel etiquetaNicketiquetaPassetiquetaConfimaPassetiquetaMail;
    private 
JTextField textoNicktextoMail;
    private 
JPasswordField textoPasstextoConfirmaPass;
    private 
JButton registrar;
    
     public 
paginaRegistro(){
         
        
super();
        
Container contenido=getContentPane();
        
contenido.setLayout(new FlowLayout());
        
JLabel etiquetaNick=new JLabel("Elige tu Nick: ");
        
JLabel etiquetaPass=new JLabel ("Elige tu contraseña: ");
        
JLabel etiquetaConfirmaPass=new JLabel ("Confirma tu contraseña: ");
        
JLabel etiquetaMail=new JLabel ("Introduce tu email: ");
        
JTextField textoNick=new JTextField (""10);
        
JPasswordField textoPass=new JPasswordField(""10);
        
JPasswordField textoConfirmaPass=new JPasswordField(""10);
        
JTextField textoMail=new JTextField(""10);
        
JButton registrar=new JButton ("Registrarme");
        
contenido.add(etiquetaNick);
        
contenido.add(textoNick);
        
contenido.add(etiquetaPass);
        
contenido.add(textoPass);
        
contenido.add(etiquetaConfirmaPass);
        
contenido.add(textoConfirmaPass);
        
contenido.add(etiquetaMail);
        
contenido.add(textoMail);
        
contenido.add(registrar);
        
this.setTitle("Registrar Nuevo Usuario");
        
this.setModal(true);
        
this.setLocation(200150);
        
this.setSize(new Dimension(300180));
        
this.setVisible(true);
        
registrar.addActionListener (
            new 
ActionListener(){
                public 
void actionPerformed(ActionEvent ae){
                    
dispose();
                }
            }
        );
        
    }
      

¿Podéis ver porqué no hace nada al presionar el botón Registrar? ¿O cómo lo hariais vosotros?

Gracias y Saludos!
  #2 (permalink)  
Antiguo 21/06/2007, 10:15
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: JFrame llama a JDialog, el cual no responde

Me estoy desquiciando, sigo atascado con lo mismo, asi que he intentado implementarlo de otra manera que os pongo a continuación, pero sigue sin responder cuando aprieto el JButton :(

El código del JDialogue es este, a ver si le veis algo:

Código PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.io.*;


        
public class 
paginaRegistro extends JDialog {
    
    private 
Container contenido;
    private 
JLabel etiquetaNicketiquetaPassetiquetaConfimaPassetiquetaMail;
    private 
JTextField textoNicktextoMail;
    private 
JPasswordField textoPasstextoConfirmaPass;
    private 
JButton registrar;
    
    public 
paginaRegistro(){
         
        
super();
        
Container contenido=getContentPane();
        
contenido.setLayout(new FlowLayout());
        
JLabel etiquetaNick=new JLabel("Elige tu Nick: ");
        
JLabel etiquetaPass=new JLabel ("Elige tu contraseña: ");
        
JLabel etiquetaConfirmaPass=new JLabel ("Confirma tu contraseña: ");
        
JLabel etiquetaMail=new JLabel ("Introduce tu email: ");
        
JTextField textoNick=new JTextField (""10);
        
JPasswordField textoPass=new JPasswordField(""10);
        
JPasswordField textoConfirmaPass=new JPasswordField(""10);
        
JTextField textoMail=new JTextField(""10);
        
JButton registrar=new JButton ("Registrarme");
        
contenido.add(etiquetaNick);
        
contenido.add(textoNick);
        
contenido.add(etiquetaPass);
        
contenido.add(textoPass);
        
contenido.add(etiquetaConfirmaPass);
        
contenido.add(textoConfirmaPass);
        
contenido.add(etiquetaMail);
        
contenido.add(textoMail);
        
contenido.add(registrar);
        
this.setTitle("Registrar Nuevo Usuario");
        
this.setModal(true);
        
this.setLocation(200150);
        
this.setSize(new Dimension(300180));
        
this.setVisible(true);
        
ButtonHandler bh=new ButtonHandler ();
        
registrar.addActionListener(bh);
              
    }
      
    private class 
ButtonHandler implements ActionListener {
        
        public 
void actionPerformed (ActionEvent e) {
            
dispose(); //nunca ejecuta estas sentencias
        
}
    }
            

Gracias y Saludos!!

Última edición por Sandunguero; 21/06/2007 a las 10:37
  #3 (permalink)  
Antiguo 21/06/2007, 23:00
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: JFrame llama a JDialog, el cual no responde

Hola:

Estás declarando JButton registrar dos veces, una como atributo de la clase y otra como variable local del método. Quizás venga por ahí el problema. no declares por segunda vez la variable local, hazlo así

Código:
public class paginaRegistro extends JDialog
{
   JButton registrar;
   ...
   public paginaRegistro
   {
      ...
      // Quita el JButton de delante....
      /*JButton*/ registrar = new JButton ("registrar");
      registrar.addActionListener (....);
   }
}
El addActionListener es el método adecuado. Para ocultar la ventana mejor setVisible(false) que dispose(). Eso sí, procura no volver a hacer más new de paginaRegistro y reutilizar la que tienes oculta haciendo setVisible(true).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 22/06/2007, 05:21
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: JFrame llama a JDialog, el cual no responde

Hola Chuidiang!

Muchas gracias por la ayuda

Tienes toda la razon con lo de declarar dos veces la referencia al JButton, no me había dado cuenta!

El caso es que pese a haber arreglado eso, al ejecutar y presionar sobre el JButton "registrar", sigue sin hacer nada :(

Al final el JDialog me queda así:
Código PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.io.*;


        
public class 
paginaRegistro extends JDialog {
    
    private 
Container contenido;
    private 
JLabel etiquetaNicketiquetaPassetiquetaConfirmaPassetiquetaMail;
    private 
JTextField textoNicktextoMail;
    private 
JPasswordField textoPasstextoConfirmaPass;
    private 
JButton registrar;
    
    public 
paginaRegistro(){
         
        
super();
        
contenido=getContentPane();
        
contenido.setLayout(new FlowLayout());
        
etiquetaNick=new JLabel("Elige tu Nick: ");
        
etiquetaPass=new JLabel ("Elige tu contraseña: ");
        
etiquetaConfirmaPass=new JLabel ("Confirma tu contraseña: ");
        
etiquetaMail=new JLabel ("Introduce tu email: ");
        
textoNick=new JTextField (""10);
        
textoPass=new JPasswordField(""10);
        
textoConfirmaPass=new JPasswordField(""10);
        
textoMail=new JTextField(""10);
        
registrar=new JButton ("Registrarme");
        
contenido.add(etiquetaNick);
        
contenido.add(textoNick);
        
contenido.add(etiquetaPass);
        
contenido.add(textoPass);
        
contenido.add(etiquetaConfirmaPass);
        
contenido.add(textoConfirmaPass);
        
contenido.add(etiquetaMail);
        
contenido.add(textoMail);
        
contenido.add(registrar);
        
this.setTitle("Registrar Nuevo Usuario");
        
this.setModal(true);
        
this.setLocation(200150);
        
this.setSize(new Dimension(300180));
        
this.setVisible(true);
        
ButtonHandler bh=new ButtonHandler ();
        
registrar.addActionListener(bh);
              
    }
      
    private class 
ButtonHandler implements ActionListener {
        
        public 
void actionPerformed (ActionEvent e) {
            
setVisible(false);//esta sentencia nunca se llega a ejecutar!!
            //codigo para registrar nuevo usuario ira aqui
        
}
    }
            

¿Alguna otra sugerencia?

Gracias chic@s
  #5 (permalink)  
Antiguo 23/06/2007, 09:49
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: JFrame llama a JDialog, el cual no responde

Hola:

Pon un System.out.println("pulsado") en el actionPerformed, a ver si es verdad que no se ejecuta o simplemente es que no se oculta lo que tu quieres.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 24/06/2007, 14:11
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: JFrame llama a JDialog, el cual no responde

Nada chuidiang, no hay manera.

Saludos.
  #7 (permalink)  
Antiguo 25/06/2007, 13:42
Avatar de zempox  
Fecha de Ingreso: mayo-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 1
Re: JFrame llama a JDialog, el cual no responde

this.setTitle("Registrar Nuevo Usuario");
this.setModal(true);
this.setLocation(200, 150);
this.setSize(new Dimension(300, 180));
this.setVisible(true);
ButtonHandler bh=new ButtonHandler ();
registrar.addActionListener(bh);


y porque no pones el listener antes de hacer visible el JDialog asi :

ButtonHandler bh=new ButtonHandler ();
registrar.addActionListener(bh);

this.setTitle("Registrar Nuevo Usuario");
this.setModal(true);
this.setLocation(200, 150);
this.setSize(new Dimension(300, 180));
this.setVisible(true);
  #8 (permalink)  
Antiguo 09/07/2007, 14:32
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: JFrame llama a JDialog, el cual no responde

Zempox!!

hoy he retomado este programa que tenía estancado y por eso acabo de leer tu mensaje que en su día se me pasó por alto.

Bueno, que me has salvado macho!! Era por el orden de esas 2 líneas

Muchas gracias y saludos
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 15:47.