Discusión:JFrame y JDialog

De ChuWiki
Saltar a: navegación, buscar

Hola:

Tengo problemas para agregar el icono en Jdialog(Heredar de la clase Padre)

/*Esto es el metodo initialize de la clase la padre donde agrego el icono*/
private void initialize() throws Exception 
{
	conec=new ConectorBD("item_22_iosper","root","hugo");
	this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        this.setIconImage(new ImageIcon ("imagenes/Escudo.gif").getImage());

}
/**Este es el constructor del Jdialog(Clase Hijo del Jframe)
public pantallaCodigo(JFrame padre,ConectorBD con) throws Exception 
{
	super(padre,"");
	conec=con;
	initialize();
}

Debo definir algo en el metodo initialize() para mostrar el icono?

Saludos y Muchas gracias.

Chuidiang:No deberías tener que hacer nada especial. Tiene más pinta de que no se encuentra la imagen. Prueba a poner path absoluto del fichero. Si tienes el fichero de imagen dentro del jar, ten en cuenta que se lee de forma distinta. Echa un ojo en Carga de imágenes


Hola! leo tu web a menudo, por lo general me "convences" a decir verdad es bastante didáctica la forma en que proporcionas tu información, pero en este caso debo de decirte que no estoy muy conforme con lo que as puesto sobre los JDialog y los JFrmae, por este motivo y para aportar algo mas que tal vez sirva de algo y ayude a que los internautas puedan hacer uso de la capacidad que proporciona los javax.swing.JInternalFrame, que a mi gusto son mas adecuados para hacer aplicaciones que se comporten como MDI, de esta forma queda mas prolijo a mi entender, claro esta que un JInternalFrame es necesario tener un contenedor como JDesktopPane no siendo posible mostrarlo en caso de que no exista un owner, es decir con solo invocar el método frmInternal.setVisible(true) como muestro a continuación.

import java.awt.Dimension; import javax.swing.JDesktopPane; import javax.swing.JInternalFrame;

   public JFrame() {
       JDesktopPane dsk = new JDesktopPane();
       
       this.setPreferredSize(new Dimension(300, 200));
       this.add(dsk);
       
       dsk.setBounds(20, 20, 260, 160);        
       pack();
       
       JInternalFrame frm = new JInternalFrame("Formulario interno");
       frm.setVisible(true);        
       dsk.add(frm); // si se comenta esta linea el JInternalFrame no se muestra
   }

}

Espero que a alguien le sirva y bueno ya me diran si es preferible hacerlo asi o no.

Saludos Ignacio

--Chuidiang 03:12 29 jul 2008 (EDT) Hola. Gracias por la puntualización. Efectivamente, el JInternalFrame es una opción perfectamente válida y va con los gustos o necesidades de la aplicación el usarlos o no. Quizás ha habido un malentendido en la primera frase del artículo. Cuando me refiero a que la ventana principipal debe ser un JFrame y el resto JDialog, me refiero a que sólo debe haber un JFrame y que el resto de ventanas "reales" (heredan de Window y el sistema operativo las trata como tales) si las hay, deben ser JDialog. Un JInternalFrame es una ventana "ficticia" (no hereda de Window y el sistema operativo no sabe nada de ella) y por eso no la había mencionado. Como verás, ya lo he intentado especificar un poco mejor en el artículo.