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

Frame tipo showdialog

Estas en el tema de Frame tipo showdialog en el foro de Java en Foros del Web. ¿Cómo se hace en JAVA para que un usuario solo pueda interactuar con la ventana última mostrada y no con las que tiene detrás? Evidentemente ...
  #1 (permalink)  
Antiguo 09/03/2009, 09:52
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Exclamación Frame tipo showdialog

¿Cómo se hace en JAVA para que un usuario solo pueda interactuar con la ventana última mostrada y no con las que tiene detrás? Evidentemente las ventanas corresponden a la misma aplicación.

Lo que quiero hacer, en .net, se haría con un: "frame.showdialog()" pero en java solo se hacer frame.setVisible(true);

Muchas gracias.
  #2 (permalink)  
Antiguo 09/03/2009, 09:57
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Frame tipo showdialog

en java tambien lo hay revisa la clase JDialog amio
  #3 (permalink)  
Antiguo 09/03/2009, 15:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Frame tipo showdialog

Ese concepto, en cualquier lenguaje que lo vayas a usar, se conoce como "ventana modal", para cuando tengas que buscar referencias.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 13/03/2009, 07:41
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Exclamación Respuesta: Frame tipo showdialog

Ahora que ya me habeis dicho como he de hacerlo, me estoy encontrado problemas para cambiar mis JFrames por JDialogs.

Todo bien cuando de un jframe muestro un jdialog, pero cuando de jdialog1, muestro jdialog2 (dandole como padre jdialog1) me aparecen errores de compilación.

Esta es la llamada desde el jdialog1:

Código:
private void LabelTemaMouseClicked(java.awt.event.MouseEvent evt) {
        Listado2 ventana = new Listado(this, true, baseDatos, this.textTema, "tema");
        ventana.setVisible(true);
}
y este es el constructor del jdialog2:

Código:
public Listado(java.awt.Frame parent, boolean modal, IBaseDatos valor, JTextField formularioPasado, String pasado) {

Me da error de compilación en el "this" de la llamada del jdialog1, dice que no puede encontrar el constructor
  #5 (permalink)  
Antiguo 13/03/2009, 11:27
 
Fecha de Ingreso: octubre-2005
Ubicación: Córdoba, Veracruz
Mensajes: 42
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Frame tipo showdialog

En tu constructor le estás diciendo que vas a pasar un jFrame pero le envías un jDialog.
¡Saludos!
  #6 (permalink)  
Antiguo 13/03/2009, 11:29
 
Fecha de Ingreso: octubre-2005
Ubicación: Córdoba, Veracruz
Mensajes: 42
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Frame tipo showdialog

En el constructor le estás diciendo que vas a pasar un Frame, pero dices que la llamada la haces desde un Dialog. Tal vez ese sea el problema.
  #7 (permalink)  
Antiguo 13/03/2009, 16:11
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Frame tipo showdialog

¿Cómo tengo que dejar el constructor? He probado a poner Dialog donde pone Frame pero así no debe ser... es que no se como ponerlo...

gracias.
  #8 (permalink)  
Antiguo 14/03/2009, 08:34
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Frame tipo showdialog

Nadie lo sabe?
  #9 (permalink)  
Antiguo 14/03/2009, 11:07
 
Fecha de Ingreso: octubre-2005
Ubicación: Córdoba, Veracruz
Mensajes: 42
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Frame tipo showdialog

java.awt.Dialog

Te dejo un ejemplo:
Código:
public mesa(java.awt.Dialog parent, boolean modal) {
     super(parent, modal);
     initComponents();
}
¡Saludos!
  #10 (permalink)  
Antiguo 14/03/2009, 15:06
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Frame tipo showdialog

Así es como lo tengo y me sigue dando fallo en el "this" cuando llamo al jdialog:

Código:
public Listado(java.awt.Dialog parent, boolean modal, IBaseDatos valor, JTextField formularioPasado, String pasado) {
        super(parent, modal);
        initComponents();
}
  #11 (permalink)  
Antiguo 14/03/2009, 15:44
 
Fecha de Ingreso: octubre-2005
Ubicación: Córdoba, Veracruz
Mensajes: 42
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Frame tipo showdialog

No soy muy bueno en esto de java, apenas estoy iniciando, pero supongo que dentro de super deberías pasarle todos los parámetros (parent, modal, valor, formularioPasado, pasado). Aunque creo que, en lugar de enviar parámetros en el constructor, deberías crear algún método para poder tomarlos (algo como getIBaseDatos, getFormularioPasado, getPasado).
Espero haberme explicado bien.
¡Saludos!
  #12 (permalink)  
Antiguo 14/03/2009, 23:10
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Frame tipo showdialog

Hola

¿Dónde está ese this que dices? ¿Que error te da? Quizás el error no está en ese trozo de código que has puesto, sino en el sitio donde tienes el this ese que da error.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #13 (permalink)  
Antiguo 15/03/2009, 01:23
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Exclamación Respuesta: Frame tipo showdialog

JDialog 1 donde llamo al JDialog 2:

Código:
private void LabelAutorMouseClicked(java.awt.event.MouseEvent evt) {                                        
        Listado2 ventana = new Listado(this, true, baseDatos, this.textAutor, "autor");
// "This" es lo que da el error de compilación.
        ventana.setVisible(true);
}

__________________________________________________ _________

Constructor del JDialog2:

Código:
public Listado(java.awt.Dialog parent, boolean modal, IBaseDatos valor, JTextField formularioPasado, String pasado) {
        super(parent, modal);
        initComponents();
        baseDatos = valor;
        cajonDeTextoPasado = formularioPasado;
        this.setLocationRelativeTo(null);
    }

Muchas gracias a todos.
  #14 (permalink)  
Antiguo 15/03/2009, 06:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Frame tipo showdialog

Vamos progresando. Ahora... ¿Cómo es la clase que tiene el método LabelAutorMouseClicked? ¿De quíén hereda, si es que hereda de alguien?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #15 (permalink)  
Antiguo 15/03/2009, 14:17
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Exclamación Respuesta: Frame tipo showdialog

La clase que tiene el método LabelAutorMouseClicked ( llamada AltaLibro ) es un JFrame.

Código:
package mibiblioteca;

import javax.swing.JOptionPane;

public class AltaLibro extends javax.swing.JDialog {

...
Eso ayuda?
  #16 (permalink)  
Antiguo 15/03/2009, 22:06
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Frame tipo showdialog

Hombre, lo veo un poco incongruente, dices que es un JFrame pero heredas de JDialog, no es lo mismo. ¿JDialog o JFrame?. El constructor de tu dialog modal admite Dialog y no Frame. Si heredas de Frame, te da el error que estás comentado en el this.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #17 (permalink)  
Antiguo 16/03/2009, 07:38
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Exclamación Respuesta: Frame tipo showdialog

O no te entiendo, o me he explicado mal:

Tengo 3 "ventanas":

1ª: Menú principal (es un JFrame). Dicha ventana tiene un botón (Alta) que nos lleva al formulario de alta de un nuevo libro:

2ª: Alta de nuevo libro (es un JDialog) En dicha ventana hay un botón, que nos muestra un listado (para poder elegir autor)

3ª Es la ventana (JDialog) que muestra el listado de autores.


De la 1º ventana a la 2º no tengo ningún problema al llamarla. El problema surge de la 2º a la 3º ventana, es decir, entre JDialogs.

Código de la 2º ventana (JDialog AltaLibro):


Código:
package mibiblioteca;

import javax.swing.JOptionPane;

public class AltaLibro extends javax.swing.JDialog {
    IBaseDatos baseDatos;

    public AltaLibro(java.awt.Frame parent, boolean modal, IBaseDatos valor) {
        super(parent, modal);
        initComponents();
        baseDatos = valor;
        this.setLocationRelativeTo(null);
        textTitulo.grabFocus();
        this.setTitle("Alta de nuevo libro");
    }
...
Llamada a la 3º ventana (JDialog listado):

Código:
private void LabelTituloMouseClicked(java.awt.event.MouseEvent evt) {                                         
        Listado2 ventana = new Listado2(baseDatos, this.textTitulo, "titulo");
        ventana.setVisible(true);
}

Código de la 3º ventana:

Código:
package mibiblioteca;

import javax.swing.JOptionPane;

public class AltaLibro extends javax.swing.JDialog {
    IBaseDatos baseDatos;

    public AltaLibro(java.awt.Frame parent, boolean modal, IBaseDatos valor) {
        super(parent, modal);
        initComponents();
        baseDatos = valor;
        this.setLocationRelativeTo(null);
        textTitulo.grabFocus();
        this.setTitle("Alta de nuevo libro");
    }

...

El error, me aparece en la llamada de la 2º ventana a la 3º. (Lo que está puesto en rojo), me dice el siguiente error: "tipos incompatibles".

Tened un poco de paciencia conmigo porque estoy empezando. Muchas gracias.
  #18 (permalink)  
Antiguo 16/03/2009, 11:23
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Frame tipo showdialog

Hola:

Así es imposible, en cada post dices y pones una cosa distinta. Mira el this rojo que has puesto en este último y el rojo que pusiste dos post antes. NO es lo mismo. De hecho, la línea

Listado2 ventana = new Listado....

la has puesto tres veces a lo largo de este tema y cada vez es distinta.

Entiendo que el código va evolucionando entre respuesta y respuesta porque vas probando cosas, pero si no dices en cada post la nueva versión, va a ser difícil ayudarte. En la versión que has puesto en el último post haría falta ver cómo has declarado el constructor de la clase Listado2, que es de la que haces new y de la que te está protestando.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #19 (permalink)  
Antiguo 16/03/2009, 15:37
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Frame tipo showdialog

Cita:
Iniciado por chuidiang Ver Mensaje
Así es imposible...
Lo siento de veras, pero entre que como tu dices, voy cambiando cosas y que tengo un poco de lío mental pues no os lo estoy explicando bien...

No se que he hecho, pero ya no me rechista el programa, seguro que era una tontería como una casa.

Muchas gracias por vuestra paciencia.
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 23:00.