Cargar contentpanel dependiendo de un menubar

HG_Tevez

Buenas tengo una duda con los menubar y contentpanel en java.

Tengo un jframe que tiene un menubar, lo que quiero es que cuando pulse en la opcion por ejemplo user/new, solo se carge el formulario.

Seria lo tipico de web que el head y el footer se queda siempre igual y lo unico que cambia es el body

Lo siento por la explicacion de mierda.


He estado mirando con jinternalframe pero se ve perfectamente que son 2 jframe independientes y yo quiero que parezca que es un solo jframe. Otra opciones es hacer un copy/paste en todos los jframe del menubar pero como comprendereis es la ultima opcion, espero que exista algo mas eficiente que copiar 200 linea en cada jframe

B

#1 Lo suyo es que en los listener de los menús cambies el content pane del JFrame.

code: tuJFrame.setContentPane(Container contentPane);

Te creas JPanels para cada sección y listo.

1 respuesta
HG_Tevez

#2 Container contentPane es la clase que extiende de Jpanel que hace de seccion?

1 respuesta
B

#3 Al revés, JPanel hereda de JComponent y este a su vez de Container.
http://docs.oracle.com/javase/7/docs/api/javax/swing/JPanel.html

1 respuesta
HG_Tevez

#4 He visto que en cambia pero no, me explico. Como me has dicho en los listener del menu cambio el Jpanel. Y creo que lo cambia porque tengo un "syso" puesto y cuando le doy a esa opcion en la consola veo el "syso", lo unico es que no cambia el jpanel, puede ser que el jpanel original este por encima del que quiero mostrar?

En los listener tengo puesto

NewUserPanel up=new NewUserPanel();

y la nueva seccion la tengo delcarada como:

public class NewUserPanel extends JPanel

En eso no hay error, no?

Gracias

1 respuesta
B

#5 Está correcto, estableciendo el panel lo estará estableciendo pero te hace falta despues:

JPanel contentPane = (JPanel) frame.getContentPane();
contentPane.revalidate(); 
contentPane.repaint();
1 respuesta
HG_Tevez

#6 Muchas gracias ya esta

1 respuesta
B

#7 De nada, ya si quieres hacerlo bien del todo, no deberías lanzar las operaciones "costosas" en el mismo hilo que pintas. (pero para esto ya necesitas saber threads)

1 respuesta
HG_Tevez

#8 Algo se de threads pero muy poquito, yo creo que de momento lo hare asi.

Usuarios habituales