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

Cambiar JPanel desde menú JFrame

Estas en el tema de Cambiar JPanel desde menú JFrame en el foro de Java en Foros del Web. Hola a todos, tal y como indico en el título quiero saber cual es la forma correcta de mostrar distintos JPanel en un JFrame. Estos ...
  #1 (permalink)  
Antiguo 17/04/2013, 10:57
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 9 meses
Puntos: 0
Cambiar JPanel desde menú JFrame

Hola a todos, tal y como indico en el título quiero saber cual es la forma correcta de mostrar distintos JPanel en un JFrame. Estos JPanel están en clases independientes y se deben cargar al seleccionar la opción en el menú.
  #2 (permalink)  
Antiguo 17/04/2013, 11:17
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Cambiar JPanel desde menú JFrame

Estoy probando con una Ventana sencilla y este es el código
Cita:
package pruebas;

import java.awt.BorderLayout;

public class Principal extends JFrame {

private JPanel contentPane;
static Principal frame;

Panel_1 panel_1 = new Panel_1();
Panel_2 panel_2 = new Panel_2();

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame = new Principal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

public Principal() {

setTitle("Ventana Principal");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);

JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);

JMenu mnNewMenu = new JMenu("Panel");
menuBar.add(mnNewMenu);

JMenuItem mntmPanel = new JMenuItem("Panel 1");
mntmPanel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
frame.getContentPane().remove(panel_2);
frame.getContentPane().add(panel_1);
frame.repaint();
}
});
mnNewMenu.add(mntmPanel);

JMenuItem mntmPanel_1 = new JMenuItem("Panel 2");
mntmPanel_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.getContentPane().remove(panel_1);
frame.getContentPane().add(panel_2);
frame.repaint();
}
});
mnNewMenu.add(mntmPanel_1);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

}

}
  #3 (permalink)  
Antiguo 17/04/2013, 13:29
 
Fecha de Ingreso: julio-2012
Mensajes: 39
Antigüedad: 12 años, 3 meses
Puntos: 2
Respuesta: Cambiar JPanel desde menú JFrame

para la pantalla principal usa el JFrame que es quien debe contenes el metido main, y en ves de jpanel para las clase que se deben instanciar dentro de esta usa JInternalFrame ya que este aunque es un Container tiene comportamientos de Window y lo puedes cerrar en vez de remover. Cuando instancias un JPanel este no posee un método dispose(), por lo que solo se oculta pero continua en memoria y llegado el momento llenaras la memoria de pantallas ocultas, en cambio JInternalFrame como tiene comportamiento de Windows posee método dispose(), lo cual al cerrar la pantalla la pasa al Garbage Collector de JVM y mantienes la memoria con un uso adecuado… Saludos y espero te funcione.

Etiquetas: clase, jframe, jpanel
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 00:58.