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

Error al abrir un JPanel desde otro JPanel

Estas en el tema de Error al abrir un JPanel desde otro JPanel en el foro de Java en Foros del Web. Hola a todos, Estoy realizando una aplicación de formularios con Java, formularios que implemento heredando de JPanel e implementando IWindow y ActionListener. El formulario principal ...
  #1 (permalink)  
Antiguo 21/08/2007, 02:43
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Error al abrir un JPanel desde otro JPanel

Hola a todos,
Estoy realizando una aplicación de formularios con Java, formularios que implemento heredando de JPanel e implementando IWindow y ActionListener.

El formulario principal (el primero que se abre) está definido así:

public class Altas extends JPanel implements IWindow, ActionListener {
...

public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(btnInforme))
{
Informes dataSelectionPanel = new Informes();
PluginServices.getMDIManager().addWindow(dataSelec tionPanel);
}
}

...
}

Yo quiero que al presionar el botón btnInforme (es un JButton) se abra el formulario que define la clase Informes, que hereda también de JPanel:


public class Informes extends JPanel implements IWindow, ActionListener

pero no hace nada. ¿Debo declarar ésta clase de otro modo?

Muchas gracias, un saludo.
  #2 (permalink)  
Antiguo 21/08/2007, 07:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Re: Error al abrir un JPanel desde otro JPanel

Hola:

Debes heredar de JDialog en vez de JPanel o bien meter la clase informes dentro de un JDialog. Luego debes llamar al método setVisible(true) del JDialog.

Código:
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(btnInforme))
{
Informes dataSelectionPanel = new Informes();
JDialog d = new JDialog();
d.getContentPane().add(dataSelectionPanel);
d.pack(); // para darle un tamaño a la ventana
d.setVisible(true);
PluginServices.getMDIManager().addWindow(dataSelec tionPanel);
}
}
Sería conveniente si se puede pulsar este botón varias veces que no hagas un new de Informes ni del JDialog cada vez que se pulse el botón. Guárdalos como atributos de la clase Altas y simplemente llama a setVisible(true) y setVisible(false).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 22/08/2007, 01:19
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Re: Error al abrir un JPanel desde otro JPanel

Hola,
He puesto el código que me dices dentro de la opción del botón, pero no funciona. ¿Tengo qeu cambiar algo en la implementación de la clase Informes?
Gracias
  #4 (permalink)  
Antiguo 22/08/2007, 01:34
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Re: Error al abrir un JPanel desde otro JPanel

Hola:

Mira con el debugger o pon System.out justo antes del if, a ver si se está llamando a la acción del botón. Luego comprueba si entra dentro del if.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 22/08/2007, 01:54
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Re: Error al abrir un JPanel desde otro JPanel

Hola, gracias por tu respuesta.
Ya conseguí que me lo abriera, pero ahora tengo otra duda.
Cuando probé el informe abriéndolo por separado tenía un tamaño adecuado a lo que yo quiero.
El tamaño se lo di de manera fija:
public WindowInfo getWindowInfo()
{
viewInfo=new WindowInfo(WindowInfo.MODALDIALOG);
viewInfo.setTitle(PluginServices.getText(this,"Inf orme"));
viewInfo.setWidth(this.getWidth()+480);
viewInfo.setHeight(this.getHeight()+500);
return viewInfo;
}
Lo que pasa es que ahora llamando a la clase Informe desde el otro JPanel (Altas) me lo abre, pero tan grande que un jtextarea me ocupa todo el alto de la pantalla.
¿Sabes a que puede ser debido? Muchas gracias por tu ayuda.
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 14:01.