Está en la página 1de 5

JTabbedPanePersonalizado

Por:NeryChucuy http://www.idesisnery.blogspot.com

JTabbedPane Personalizado

JTabbedPanePersonalizado

Por:NeryChucuy http://www.idesisnery.blogspot.com

Contenido
Introduccion Funcionamiento Configuracin Ventana.class Pestana.class

JTabbedPanePersonalizado

Por:NeryChucuy http://www.idesisnery.blogspot.com

Introduccin [contenido]
Bueno, el motivo de esta pequea gua es explicar las caractersticas principales del personalizar un JTabbedPane del API java.swing; ya que trat de documentar el cdigo de forma detallada, aqu solo indicar la lgica de operacin. Principalmente personalizaremos las pestaas de cada ficha en el panel, para que nuestras aplicaciones se vean ms profesionales y sean mucho ms funcionales. Lo que haremos es agregar un icono y un botn para cerrarlas, pero con los conceptos obtenidos con este ejemplo, podrs agregar los componentes que tu desees a las pestaas. Adems haremos que cuando las fichas sean demasiadas, no sigan apareciendo bajo las anteriores sino aparezcan los botones de desplazamiento horizontal ;).

Figura 1. As luce. Nota: El ejemplo adjunto fue desarrollado en NetBeans 5.5

Funcionamiento [contenido]
La forma en que lograremos lo propuesto ser adentrndonos un poquito en la clase JTabbedPane. Esta clase posee el mtodo setTabComponentAt(int index, Componet component) , el cual se encarga de establecer el componente usado para las pestaas de las fichas [1]. Tambin crearemos una clase que extienda de JPanel para agregar a este los objetos que queramos mostrar en la pestaa, luego como un JPanel es un Component entonces podremos configurarlo como pestaa de las fichas. Para colocar los botones de desplazamiento horizontal, solo modificaremos una propiedad del JTabedPane.

[1] Este mtodo 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 pestaa.

JTabbedPanePersonalizado

Por:NeryChucuy http://www.idesisnery.blogspot.com

Configuracin [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. La accin del tem Agregar ficha va de la siguiente manera: (1) (2) (3) (4) tabbedPrincipal.addTab("Nuevo",newJPanel()); tabbedPrincipal .setSelectedIndex(tabbedPrincipal.getTabCount()1); Pestanapestana=newPestana(this.getTabbedPrincipal()); tabbedPrincipal .setTabComponentAt(tabbedPrincipal.getTabCount()1,pestana);

En (1) agregamos una ficha al JTabbedPane, en este caso agregamos solo un JPanel, pero podra ser cualquier componente, que contenga un TextArea o lo que necesites en cada ficha para tu aplicacin. En (2) hacemos que la ltima ficha agregada sea la seleccionada, mostrando as su contenido. Un nuevo objeto Pestana es creado en (3), como parmetro recibe un JTabbedPane; el mtodo getTabbedPrincipal() retorna el JTabbedPane usado en la aplicacin: publicJTabbedPanegetTabbedPrincipal() { returnthis.tabbedPrincipal; } tabbedPrincipal es el nombre del JTabbedPane utilizado en este ejemplo. 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.

JTabbedPanePersonalizado

Por:NeryChucuy http://www.idesisnery.blogspot.com

Pestana.class [contenido] El constructor de sta clase recibe como parmetro un JTabbedPane, que debe ser el componente al que est siendo agregado la ficha que encabezar esta pestaa. Dicho JTabbedPane se toma como referencia[2] en sta clase (o sea tomamos el apuntador al objeto ;) para poder utilizarlo en el evento del botn de cerrar pestaa (X). He aqu la accin del botn cerrar (X): (1) inti=panelContenedor.indexOfTabComponent(this); (2)if(i!=1) (3)panelContenedor.remove(i); panelContenedor es el nombre del parmetro que contiene la referencia al JTabbedPane que se pasa como parmetro en el constructor de la clase; ahora vemos por qu era necesario hacer esto. En (1) obtenemos el ndice de la ficha que es encabezada por la pestaa actual (this). En (2) nos aseguramos que el ndice este correcto. 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.

Esoestodo!Recuerdaqueelcdigofuenteestdocumento,allpodrsencontrarlosdetallesdetodo elcdigo.

Tuscomentariossonmuyimportantes. NeryChucuy idesisnery@yahoo.com http://www.idesisnery.blogspot.com

También podría gustarte