PDA

Ver la versión completa : [Ayuda] Duda de base programando en Java con Swing (JTabbedPane)



ChUKii
07/08/2010, 10:34
Buenas peña,

Estoy intentando hacer una ventanuca en Swing con un boton arriba del todo que ocupe todo el ancho de la ventana y debajo haya un JTabbedPane que ocupe tambien todo el ancho de la ventana.

Para ello lo que hago es crear un JPanel con el Boton y un JTabbedPane con los tabs...

El problema viene a la hora de meterlo en el JFrame... como lo hago? Con el Container no me sale nada. Y si los añado uno a uno con el getContentPane().add solo puedo añadir uno...


public class MenuPrincipal{



public void menuPrincipal(){

JFrame miMarco = new JFrame("Download Manager");
miMarco.setSize(800,600);
miMarco.setVisible(true);

JPanel miPanelSuperior = new JPanel();
miPanelSuperior.setBackground(Color.blue);
Button miBotonSuperior = new Button("Botoncito!!");
miPanelSuperior.add(miBotonSuperior);


JTabbedPane miTabbedPane = new JTabbedPane();

JLabel etiquetaTab1 = new JLabel("Panel 1",SwingConstants.CENTER);
JPanel panel1 = new JPanel();
panel1.add(etiquetaTab1);
miTabbedPane.addTab("Panel 1 dos", panel1);

JLabel etiquetaTab2 = new JLabel("Panel 1",SwingConstants.CENTER);
JPanel panel2 = new JPanel();
panel2.setBackground(Color.yellow);
panel2.add(etiquetaTab2);
miTabbedPane.addTab("Panel 2 dos", panel2);

Container contendor = new Container();
contendor.add(miPanelSuperior);
contendor.add(miTabbedPane);

miMarco.getContentPane().add(contendor);

}
}

A ver si alguien me puede mostrar algo de luz... estoy seguro de que es una duda de base, que no pillo bien el funcionamiento de los paneles :(

Gracias! :brindis::brindis:

jduranmaster
07/08/2010, 11:18
esperate un momento que te lo miro.

ChUKii
07/08/2010, 11:21
esperate un momento que te lo miro.

Gracias tio! :D

jduranmaster
07/08/2010, 11:39
efectivamente habia algun problema a la hora de añadir JTaabedPAne a un Frame principal, la razón es que el JTabbedPAne es un componente Swing que esta pensado para ser usado dentro de un escritorio es decir dentro de un componente:
JDesktopPane.

Sabiendo esto la forma de operar seria la siguiente:




private JDesktopPane desktop = new JDesktopPane();//ESCRITORIO

......


setContentPane(desktop);desktop.setLayout(new BorderLayout());//desktop
//aqui le he dicho al desktop que tome como tipo de distribución el borderlayot que
//es el mas simple pero tu le puedes poner como mas te convenga para tu
//aplicación

desktop.add(tabbedMaster,BorderLayout.CENTER);

//y como puedes ver finalmente le añado un objeto de tipo JTaabedPane al desktop
// y le digop que este en el centro del Layout. el nombre de la variabel es
//tabbedmaster porque en la aplicación que la use, dentro de este tabbedpane
//habia otros, y podemos decir que el tabbedmaster era el principal.



espero que te haya ervido de ayuda.

ChUKii
07/08/2010, 11:50
efectivamente habia algun problema a la hora de añadir JTaabedPAne a un Frame principal, la razón es que el JTabbedPAne es un componente Swing que esta pensado para ser usado dentro de un escritorio es decir dentro de un componente:
JDesktopPane.

Sabiendo esto la forma de operar seria la siguiente:




private JDesktopPane desktop = new JDesktopPane();//ESCRITORIO

......


setContentPane(desktop);desktop.setLayout(new BorderLayout());//desktop
//aqui le he dicho al desktop que tome como tipo de distribución el borderlayot que
//es el mas simple pero tu le puedes poner como mas te convenga para tu
//aplicación

desktop.add(tabbedMaster,BorderLayout.CENTER);

//y como puedes ver finalmente le añado un objeto de tipo JTaabedPane al desktop
// y le digop que este en el centro del Layout. el nombre de la variabel es
//tabbedmaster porque en la aplicación que la use, dentro de este tabbedpane
//habia otros, y podemos decir que el tabbedmaster era el principal.



espero que te haya ervido de ayuda.

Estoy intentando entenderlo... pero una cosa. El problema no es el JTabbedPane. Lo puedo poner en el Frame principal... el problema es que nose si se pueden ponder un JPanel y un JTabbedPane a la vez en un mismo frame...

Gracias jduranmaster :brindis::brindis:

jduranmaster
07/08/2010, 11:53
te refieres a colocar un JPanel, y encima un JTabbedPAne? creo que en principio se puede por eso te dicia que el JTabbedPane debe ir encima de una JdektopPane que a fin de cuentas es un tipo de JFrame especial. es decir prueba a poner el JPanel encima el JTabbedPane, y todo el conjunto anterior encima del JDesktopPane. a ver si tira.

ChUKii
07/08/2010, 11:58
te refieres a colocar un JPanel, y encima un JTabbedPAne? creo que en principio se puede por eso te dicia que el JTabbedPane debe ir encima de una JdektopPane que a fin de cuentas es un tipo de JFrame especial. es decir prueba a poner el JPanel encima el JTabbedPane, y todo el conjunto anterior encima del JDesktopPane. a ver si tira.

He hecho un croquis a ver si asi mejor ;)

Mi idea es hacer una ventana con un JPanel arriba donde poder meter un boton. Luego a la izquiera mas de lo mismo. Y debajo/izquierda un JDesktopPane donde iria la miga de la aplicación :)

http://img10.imageshack.us/img10/516/croquiss.jpg

jduranmaster
07/08/2010, 12:02
He hecho un croquis a ver si asi mejor ;)

Mi idea es hacer una ventana con un JPanel arriba donde poder meter un boton. Luego a la izquiera mas de lo mismo. Y debajo/izquierda un JDesktopPane donde iria la miga de la aplicación :)

http://img10.imageshack.us/img10/516/croquiss.jpg

el croquis esta bien pero el JDesktopPAne es ¡¡¡¡¡todo!!!!, me refiero a que el fondo es el desktop y los panel y tabbed van encima, lo unico que tienes que hacer es seleccionar un gestor de disposición adecuado como borderlayout (como te indicaba arriba) y colocar los componentes en el centro, arriba, y derecha y las dimensiones de cada componente se ajustaran al desktop. ademas tu tmb se las puedes cambiar para hacerlos mas largos o anchos, para ello mirate la api porque cada componente tiene un metodo que permite cambiar la dimension del componente en cuestion.

ChUKii
07/08/2010, 12:04
el croquis esta bien pero el JDesktopPAne es ¡¡¡¡¡todo!!!!, me refiero a que el fondo es el desktop y los panel y tabbed van encima, lo unico que tienes que hacer es seleccionar un gestor de disposición adecuado como borderlayout (como te indicaba arriba) y colocar los componentes en el centro, arriba, y derecha y las dimensiones de cada componente se ajustaran al desktop. ademas tu tmb se las puedes cambiar para hacerlos mas largos o anchos, para ello mirate la api porque cada componente tiene un metodo que permite cambiar la dimension del componente en cuestion.

Ah ****! ok ok ok vale tio jejeje.

Gracias!

:brindis::brindis:

jduranmaster
07/08/2010, 12:06
no hay de que, sis tienes algun problema ya sabes. saludos.