Componentes Avanzados: JTabbedPane (Pestañas)

Clase JTabbedPane

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTabbedPane
Las pestañas se nos presentan en java con la clase JTabbedPane. Recuerdo las primeras pestañas al revisar las propiedades del sistema en windows xp, haciendo click derecho sobre el icono de MiPC y luego en propiedades:
La idea es sencilla, mostrar el contenido de una pestaña en la ventana siempre que esta estuviera seleccionada y las demas no se nos muestran, permanecen a la espera hasta seleccionarlas. Son tipicas de las configuraciones de opciones y en los navegadores de internet.

Constructores:

  • JTabbedPane()
    • Crea un TabbedPane vacío, con una posición predeterminada superior.
  • JTabbedPane(int tabPlacement)
    • Crea una pestaña vacia pero con la posicion del entero del paramétro. Los posibles valores son:
      • JTabbedPane.TOP
      • JTabbedPane.BOTTOM
      • JTabbedPane.LEFT
      • JTabbedPane.RIGHT.
  • JTabbedPane(int tabPlacement, int tabLayoutPolicy)
    • Crea una pestaña vacia con la posicion daba(igual al anterior) y definimos loa norma de diseño. Los valores de tabLayoutPolicy son:
      • JTabbedPane.WRAP_TAB_LAYOUT
      • JTabbedPane.SCROLL_TAB_LAYOUT

Métodos:

  • add(Component component)
    • agrega el componente a la pestaña, que de titulo llevara el nombre del componente
  • add(Component component, int index)
    • agrega el componente al numero de pestaña indicado en el indice
  • add(String title, Component component)
    • agrega el componente y le da el nombre a la pestaña con el string
  • addTab(String title, Component component)
    • al parecer es igual a add() pero debe haber alguna diferencia minima que no conozco
  • addTab(String title, Icon icon, Component component)
    • agrega el componente, con un titulo y icono

Ejemplo con código:
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.event.*;
  4. public class Pestañas {
  5.     static JFrame marco = new JFrame();
  6.     static JTabbedPane pestaña = new JTabbedPane();
  7.     static JPanel panel1 = new JPanel();
  8.     static JButton saludo = new JButton("Pulsame");
  9.     static JLabel etiqueta = new JLabel("Adios");
  10.    
  11.     public static void main(String[] dar10){
  12.         marco.setTitle("Pestañas en Java");
  13.         marco.setSize(350,200);
  14.         marco.setLocationRelativeTo(null);
  15.         marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  16.         marco.setLayout(new BorderLayout() );
  17.        
  18.         saludo.addActionListener(new Pulsar() );
  19.         panel1.add(saludo);
  20.         pestaña.addTab("Pestaña 1", panel1);
  21.        
  22.         pestaña.add("Pestaña2", etiqueta);
  23.         marco.getContentPane().add(pestaña,BorderLayout.CENTER);
  24.                
  25.         marco.setVisible(true);
  26.     }
  27.     public static class Pulsar implements ActionListener{
  28.          String[] arreglo = {"Bien!  =)", "Maso", "Mal  =("};
  29.         public void actionPerformed (ActionEvent e){
  30.               JOptionPane.showOptionDialog(null, "¿Cómo estás?",
  31.                 "¡Hola!", JOptionPane.OK_CANCEL_OPTION,
  32.                 JOptionPane.INFORMATION_MESSAGE, null,
  33.                 arreglo , null);
  34.         }
  35.     }
  36. }
Resultado final:

3 comentarios:

  1. Muy buenas ¿existe el código que pueda hacer que pueda viajar de pestaña en pestaña, de modo deseado? al momento de dar click en cierto botón, se pasé de manera inmediata de la pestaña donde está el usuario a una pestaña x. Agradezco me responda.

    ResponderEliminar
    Respuestas
    1. Muy buenas luis, si es posible con a través del método setSelectedIndex y conociendo índice de la pestaña que desee navegar

      JTabbedPane.setSelectedIndex (int indice)

      El indice surge a medida que se van agregando, es en base cero.

      Eliminar
  2. Buenas tardes como estas puedo crear una barra de menu con cada uno de sus subcomponentes a trabez de puro codigo? cual seria el codigo para crear la barra de menu, poput y cada uno de ellos a travez de puro codigo quiero armar un menu por medio de una tabla segun los permiso que le asigena cada formulario de antemano muchas gracias

    ResponderEliminar