http://www.idesisnery.blogspot.com
JTabbedPane
Personalizado
JTabbedPane Personalizado Por: Nery Chucuy
http://www.idesisnery.blogspot.com
Contenido
Introduccion
Funcionamiento
Configuración
Ventana.class
Pestana.class
JTabbedPane Personalizado Por: Nery Chucuy
http://www.idesisnery.blogspot.com
Introducción [contenido]
Bueno, el motivo de esta pequeña guía es explicar las características principales del
personalizar un JTabbedPane del API java.swing; ya que traté de documentar el código de forma
detallada, aquí solo indicaré la lógica de operación. Principalmente personalizaremos las
pestañas de cada ficha en el panel, para que nuestras aplicaciones se vean más profesionales y
sean mucho más funcionales. Lo que haremos es agregar un icono y un botón para cerrarlas,
pero con los conceptos obtenidos con este ejemplo, podrás agregar los componentes que tu
desees a las pestañas. Además haremos que cuando las fichas sean demasiadas, no sigan
apareciendo bajo las anteriores sino aparezcan los botones de desplazamiento horizontal ;).
Funcionamiento [contenido]
[1] Este método cambia el atributo component que encapsula la clase privada Page contenida en
la clase JTabbedPane. Como ha de suponerse, dicho atributo es el componente mostrado en la
pestaña.
JTabbedPane Personalizado Por: Nery Chucuy
http://www.idesisnery.blogspot.com
Configuración [contenido]
Ventana.class [contenido]
En esta clase se encapsula el JFrame principal, que contiene un JTabbedPane así como una
barra de menú. Las opciones del menú son: Agregar ficha, Reset, About, Salir.
Figura 2. El menú.
(1) tabbedPrincipal.addTab("Nuevo ", new JPanel());
(2) tabbedPrincipal
.setSelectedIndex(tabbedPrincipal.getTabCount()1);
(3) Pestana pestana = new Pestana(this.getTabbedPrincipal());
tabbedPrincipal
(4) .setTabComponentAt(tabbedPrincipal.getTabCount()1,pestana);
En (1) agregamos una ficha al JTabbedPane, en este caso agregamos solo un JPanel, pero podría
ser cualquier componente, que contenga un TextArea o lo que necesites en cada ficha para tu
aplicación.
En (2) hacemos que la última ficha agregada sea la seleccionada, mostrando así su contenido.
Un nuevo objeto Pestana es creado en (3), como parámetro recibe un JTabbedPane; el método
getTabbedPrincipal() retorna el JTabbedPane usado en la aplicación:
public JTabbedPane getTabbedPrincipal()
{
return this.tabbedPrincipal;
}
Lo que hacemos con esto es pasar la referencia del JTabbedPane al objeto Pestana, para que éste
pueda acceder a las propiedades del componente, como el índice de ficha al que fue agregado,
etc.
En (4) agregamos el objeto tipo Pestana creado en (3) a la ficha agregada, osea la última.
JTabbedPane Personalizado Por: Nery Chucuy
http://www.idesisnery.blogspot.com
Pestana.class [contenido]
El constructor de ésta clase recibe como parámetro un JTabbedPane, que debe ser el
componente al que está siendo agregado la ficha que encabezará esta pestaña. Dicho
JTabbedPane se toma como referencia[2] en ésta clase (o sea tomamos el apuntador al objeto ;)
para poder utilizarlo en el evento del botón de cerrar pestaña (X).
(1) int i = panelContenedor.indexOfTabComponent(this);
(2) if (i != 1)
(3) panelContenedor.remove(i);
En (1) obtenemos el índice de la ficha que es encabezada por la pestaña actual (this).
Y por último en (3) removemos del JTabbedPane principal, la ficha que elegimos cerrar. Recuerda
que panelContenedor apunta al JTabbedPane que se encuentra en el Frame por eso es allí donde
se realizan las acciones que hagamos sobre panelContenedor.
Eso es todo! Recuerda que el código fuente está documento, allí podrás encontrar los detalles de todo
el código.
Tus comentarios son muy importantes.
Nery Chucuy
idesisnery@yahoo.com
http://www.idesisnery.blogspot.com