## Cómo utilizar la Clase Tabbed Pane

Con la clase JTabbedPane, podemos tener varios componentes (normalmente objetos JPanel) compartiendo el mismo espacio. El usuario puede elegir qué componente ver seleccionando la pestaña del componente deseado.

Para crear un TabbedPane, simplemente se ejemplariza un JTabbedPane, se crean los componentes que deseemos mostrar, y luego los añadimos al TabbedPane utilizando el método addTab.

Aquí tenemos una imagen de una aplicación que utiliza tres TabbedPane:

> Intenta esto:
> 1. Compila y ejecuta la aplicación. El código fuente esta en TabbedPaneDemo.java.
> 2. Pon el cursor sobre una pestaña. Después de un corto tiempo, verás una ayuda (tooltip) asociada con la pestaña. Como conveniencia se debe añadir el texto de la ayuda (tooltip) cuando se añade el componente al TabbedPane.
> 3. Selecciona una pestaña. El TabbedPane muestra el componente correspondiente a la pestaña.

Como muestra el ejemplo TabbedPaneDemo, una pestaña puede tener un tooltip, y puede mostrar tanto texto como una imagen. El ejemplo muestra las pestañas en sus posiciones por defecto, en la parte superior del TabbedPane. Podemos cambiar la posiciones de las pestañas a la izquierda, derecha, o abajo.

Aquí está el código de TabbedPaneDemo.java que crea el TabbedPane del ejemplo anterior. Observa que no es necesario el manejo de eventos. El objeto JTabbedPane tiene cuidado de manejar la entrada de usuario.

    ImageIcon icon = new ImageIcon("images/middle.gif");
    JTabbedPane tabbedPane = new JTabbedPane();

    Component panel1 = makeTextPanel("Blah");
    tabbedPane.addTab("One", icon, panel1, "Does nothing");
    tabbedPane.setSelectedIndex(0);

    Component panel2 = makeTextPanel("Blah blah");
    tabbedPane.addTab("Two", icon, panel2, "Does twice as much nothing");

    Component panel3 = makeTextPanel("Blah blah blah");
    tabbedPane.addTab("Three", icon, panel3, "Still does nothing");

    Component panel4 = makeTextPanel("Blah blah blah blah");
    tabbedPane.addTab("Four", icon, panel4, "Does nothing at all");

#### El API TabbedPane

> Las siguientes tablas listan los métodos y constructores más utilizados de JTabbedPane. El API para utilizar TabbedPane se divide en estas categorías:
> - Crear un Configurar un TabbedPane
> - Insertar, Eliminar, Buscar y Seleccionar Pestañas
> - Cambiar la Apariencia de las Pestañas

> Crear y Configurar un TabbedPane
> Método | Propósito
> --- | ---
> JTabbedPane() JTabbedPane(int) | Crea un TabbedPane. El argumento opcional indica dónde deberían aparecer las pestañas. Por defecto, las pestañas aparecen en la parte superior. Se pueden especificar estas posiciones (definidas en el interface SwingConstants, que implementa JTabbedPane): TOP, BOTTOM, LEFT, LEFT.
> addTab(String, Icon, Component, String) addTab(String, Icon, Component) addTab(String, Component) | Añade una nueva pestaña al TabbedPane. El primer argumento especifica el texto de la pestaña. El argumento Icon es opcional e indica el icono de la pestaña. El argumento Component especifica el componente que el TabbedPane debería mostrar cuando se selecciona la pestaña. El cuarto argumento, si existe, especifica el texto del tooltip para la pestaña.

> Insertar, Eliminar, Encontrar y Seleccionar Pestañas
> Método | Propósito
> --- | ---
> insertTab(String, Icon, Component, String, int) | Inserta una pestaña en el índice especificado, donde la primera pestaña tiene índice 0. Los argumentos son los mismos que para addTab.
> remove(Component) removeTabAt(int) | Elimina la pestaña correspondinete al índice o componente especificado.
> removeAll() | Elimina todas las pestañas.
> int indexOfComponent(Component) int indexOfTab(String) int indexOfTab(Icon) | Devuelve el índice de la pestaña que tiene el componente, título o icono especificados.
> void setSelectedIndex(int) void setSelectedComponent(Component) | Selecciona la pestaña que tiene el índice o componente especificado. Seleccionar una pestaña tiene el efecto de mostrar su componente asociado.
> int getSelectedIndex() Component getSelectedComponent() | Devuelve el índice o componente de la pestaña seleccionada.

> Cambiar la Apariencia de las Pestañas
> Método | Propósito
> --- | ---
> void setComponentAt(int, Component) Component getComponentAt(int) | Selecciona u obtiene qué componente está asociado con la pestáña del índice especificado. La primera pestaña tiene índice 0.
> void setTitleAt(int, String) String getTitleAt(int) | Selecciona u obtiene el título de la pestaña del índice especificado.
> void setIconAt(int, Icon) Icon getIconAt(int) void setDisabledIconAt(int, Icon) Icon getDisabledIconAt(int) | Selecciona u obtiene los iconos mostrados por la pestaña del índice especificado.
> void setBackgroundAt(int, Color) Color getBackgroundAt(int) void setForegroundAt(int, Color) Color getForegroundAt(int) | Selecciona u obtiene el color de fondo o de primer plano usado por la pestaña del índice especificado. Por defecto, una pestaña utiliza los colores del TabbedPane. Por ejemplo, si el color de primer plano del TabbedPane es negro, entonces todos los títulos de las pestañas serán en negro, excepto para aquellas en que especifiquemos otro color usando setForegroundAt.
> void setEnabledAt(int, boolean) boolean isEnabledAt(int) | Selecciona u obtiene el estado activado de la pestaña del índice especificado.

#### Ejemplos que usan TabbedPane

> Esta tabla lista ejemplos que usan JTabbedPane y dónde encontrarlos.

> Ejemplo | Dónde se Describe | Notas
> --- | --- | ---
> TabbedPaneDemo.java | Esta página | Demuestra unas pocas características de TabbedPane, como tooltips e iconos en las pestañas. El tamaño del frame se selecciona usando setSize.
> AlignmentDemo.java | Cómo usar BoxLayout | Usa una subclase de JTabbedPane cómo único hijo del panel de contenido de un frame. Los componentes tienen diferentes tamaños preferidos, y el frame utiliza pack en vez de setSize para seleccionar su tamaño.
> BorderDemo.java | cómo usar Bordes | Utiliza su panel de contenido de una forma similar al ejemplo anterior.
> DialogDemo.java | Cómo crear Diálogos | Tiene un TabbedPane en el centro del panel de contenido de un frame, con una etiqueta que le pertence. Utiliza pack, no setSize para seleccionar el tamaño del frame.

Ozito