Hola a todos, hoy os explicare como podemos crear pestañas en nuestra aplicación con JTabbedPane.
Es posible que queramos hacer otro tipo de aplicación, en lugar de como lo hemos hasta ahora con un solo Panel, podemos hacer una aplicación con varios paneles y cambiaremos entre paneles por las pestañas que iremos creando.
Vamos a ver como lo podemos programar nosotros mismos y después con Windows Builder.
Como hemos dicho, vamos a hacer la ventana de una forma distinta, no tendremos un atributo JPanel contentPane. Lo primero es heredar nuestra clase con JFrame como ya vimos, recuerda de importar la clase necesaria y definir el constructor.
import javax.swing.*; public class EjemploJTabbedPaneSinWB extends JFrame{ public EjemploJTabbedPaneSinWB(){ }
Colocaremos los parámetros asociados a la ventana como el tamaño, la visibilidad, etc.
import javax.swing.*; public class EjemploJTabbedPaneSinWB extends JFrame{ public EjemploJTabbedPaneSinWB(){ //Parametros asociados a la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(MAXIMIZED_BOTH); setVisible(true); setTitle("Ejemplo JTabbedPane"); } }
Ahora creamos un objeto de la clase JTabbedPane, se puede crear sin parámetros.
import javax.swing.*; public class EjemploJTabbedPaneSinWB extends JFrame{ public EjemploJTabbedPaneSinWB(){ //Parametros asociados a la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(MAXIMIZED_BOTH); setVisible(true); setTitle("Ejemplo JTabbedPane"); //Creamos el conjunto de pestañas JTabbedPane pestañas=new JTabbedPane(); } }
Ahora creamos un objeto de la clase JPanel, tampoco es necesario insertar parámetros. Después, podemos añadir los componentes que queramos como ya vimos en varios posts anteriores y después usamos el método addTab(String tituloPestaña, Panel); del objeto de JTabbedPane.
import javax.swing.*; public class EjemploJTabbedPaneSinWB extends JFrame{ public EjemploJTabbedPaneSinWB(){ //Parametros asociados a la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(MAXIMIZED_BOTH); setVisible(true); setTitle("Ejemplo JTabbedPane"); //Creamos el conjunto de pestañas JTabbedPane pestañas=new JTabbedPane(); //Creamos el panel y lo añadimos a las pestañas JPanel panel1=new JPanel(); //Componentes del panel1 JLabel et_p1=new JLabel("Estas en el panel 1"); panel1.add(et_p1); //Añadimos un nombre de la pestaña y el panel pestañas.addTab("Panel 1", panel1); } }
Con el resto de paneles haremos lo mismo.
import javax.swing.*; public class EjemploJTabbedPaneSinWB extends JFrame{ public EjemploJTabbedPaneSinWB(){ //Parametros asociados a la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(MAXIMIZED_BOTH); setVisible(true); setTitle("Ejemplo JTabbedPane"); //Creamos el conjunto de pestañas JTabbedPane pestañas=new JTabbedPane(); //Creamos el panel y lo añadimos a las pestañas JPanel panel1=new JPanel(); //Componentes del panel1 JLabel et_p1=new JLabel("Estas en el panel 1"); panel1.add(et_p1); //Añadimos un nombre de la pestaña y el panel pestañas.addTab("Panel 1", panel1); //Realizamos lo mismo con el resto JPanel panel2=new JPanel(); pestañas.addTab("Panel 2", panel2); //Componentes del panel2 JLabel et_p2=new JLabel("Estas en el panel 2"); panel2.add(et_p2); JPanel panel3=new JPanel(); //Componentes del panel3 JLabel et_p3=new JLabel("Estas en el panel 3"); panel3.add(et_p3); pestañas.addTab("Panel 3", panel3); JPanel panel4=new JPanel(); //Componentes del panel4 JLabel et_p4=new JLabel("Estas en el panel 4"); panel4.add(et_p4); pestañas.addTab("Panel 4", panel4); } }
Ahora, añadiremos las pestañas al panel. Para ello usaremos el método getContentPane().add(objeto JTabbedPane);
Por último, creamos un método main creando un objeto de la clase que hemos construido antes. Así se quedara el código al final:
import javax.swing.*; public class EjemploJTabbedPaneSinWB extends JFrame{ public EjemploJTabbedPaneSinWB(){ //Parametros asociados a la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(MAXIMIZED_BOTH); setVisible(true); setTitle("Ejemplo JTabbedPane"); //Creamos el conjunto de pestañas JTabbedPane pestañas=new JTabbedPane(); //Creamos el panel y lo añadimos a las pestañas JPanel panel1=new JPanel(); //Componentes del panel1 JLabel et_p1=new JLabel("Estas en el panel 1"); panel1.add(et_p1); //Añadimos un nombre de la pestaña y el panel pestañas.addTab("Panel 1", panel1); //Realizamos lo mismo con el resto JPanel panel2=new JPanel(); pestañas.addTab("Panel 2", panel2); //Componentes del panel2 JLabel et_p2=new JLabel("Estas en el panel 2"); panel2.add(et_p2); JPanel panel3=new JPanel(); //Componentes del panel3 JLabel et_p3=new JLabel("Estas en el panel 3"); panel3.add(et_p3); pestañas.addTab("Panel 3", panel3); JPanel panel4=new JPanel(); //Componentes del panel4 JLabel et_p4=new JLabel("Estas en el panel 4"); panel4.add(et_p4); pestañas.addTab("Panel 4", panel4); getContentPane().add(pestañas); } public static void main(String[] args) { EjemploJTabbedPaneSinWB ventana=new EjemploJTabbedPaneSinWB(); } }
Esto es lo que veremos.
Ahora lo vamos a ver como se haría con Windows Builder.
Creamos un JFrame, cambiamos el Layout a CardLayout, después abrimos la pestaña Containers y seleccionamos JTabbedPane y lo insertamos. Asi quedara:
Ahora seleccionamos un JPanel en el mismo lugar de antes y lo añadimos a la ventana. Asi lo vemos:
Si queremos añadir mas pestañas, seleccionamos de nuevo JPanel y lo insertamos al lado de la pestaña, veremos que aparecerá una barra roja, cuando soltemos tendremos una nueva pestaña.
Podemos modificar el contenido de cada panel pinchando dos veces en la pestaña.
Recuerda que podemos modificar todo lo que queramos en el código.
Con netbeans es más sencillo, solo tenemos que seleccionar el componente, JTabbedPaned y arrastrarlo a nuestro JFrame. Se peronaliza de forma muy intuitiva.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Muy bueno! Muchas gracias
gracias por la información se me presenta el siguiente problema espero me pueda brindar ayuda tengo dos ventanas una con tres botones y otra con tres pestañas quiero hacer que al presionar un botón se abra la ventana con las pestañas y me muestre el contenido de las pestañas segun el botón que corresponda
¿Como puedo editar el lugar donde quiero que vaya el JLabel que contienen las pestañas?