Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Componentes / Java / Look and Feel / Personalizar JTabbedPane con Netbeans

Personalizar JTabbedPane con Netbeans

Autor jc mouse miércoles, enero 9, 2013

Crear una librería swing para java utilizando Netbeans no es nada del otro mundo y la cantidad de código que vayamos a escribir depende  de que tan complejo sea el swing que deseamos obtener.

En este tutorial, el swing que crearemos sera un JTabbedPane personalizado al estilo windows 8 minimalista, dejando atrás el estilo clásico de este componente, gracias a las ventajas que ofrece la POO, sobre escribiremos métodos y crearemos algunos más para diseñar a nuestro antojo el swing.

El resultado obtenido sera un JTabbedpane con un estilo minimalista, sencillo, sin esos bordes 3d que a veces ya cansan a la vista.

blacktabbedpane

¿Que necesitamos?

Si bien se puede escribir código java desde un simple editor de texto, para que complicarse la vida digo yo 🙂 si tenemos varios IDEs gratuitos a disposición, nosotros haremos uso de Netbeans en su versión 7.2

Así también, es recomendable que tengas un uso intermedio de lo que es Java y Netbeans, no explicare cosas básicas como crear paquetes por ejemplo para no hacer el tuto largo y aburrido.

Tutorial

1. Creamos un nuevo proyecto en Netbeans. File -> New project -> Java -> Java Class Library.

El nombre del proyecto será “BlackTabbedPane“, si tienen otro nombre mejor, pues no hay problema 🙂

2. Ahora debemos crear la estructura de nuestra librería, esto se hace para dar orden a nuestro proyecto, por ejemplo la librería JCalendar tiene la siguiente estructura:

jcalendar structure

Puede verse como esta separado cada cosa en este swing, paquetes para las imágenes, paquetes para las clases, etc.

Muy bien, nosotros debemos hacer lo mismo con nuestro proyecto, como esta librería no será la gran cosa, esta estructura de paquetes y clases queda reducida a la siguiente forma:

Tenemos dos paquetes, uno dentro de la otra, ORG y MATRIX, los nombres de los paquetes son meramente orientativos, es decir, nos indican que cosa va dentro de cada paquete.

Solo contamos con dos clases, BlackTabbedPaneBlackTabbedPaneUI. Explicaremos para que son a continuación.

3. BlackTabbedPane.java sera nuestra clase principal, nuestro swing que utilizaremos desde el Palette de Netbeans.

Esta clase se extenderá de un JTabbedPane ya que lo que hacemos es personalizar este componente ya existente.

package org.matrix;
import javax.swing.JTabbedPane;

public class BlackTabbedPane extends JTabbedPane {

   public BlackTabbedPane(){
     /** El codigo aqui */
   }
}

Así mismo, esta clase contara con cuatro métodos públicos, dos SET y dos GET, cuando creamos una librería swing y queremos que estos métodos se muestran en la paleta de propiedades, cada método debe tener un set y un get.

    public void setTabSelectedColor( Color color )
    {

    }

    public Color getTabSelectedColor()
    {        

    }

    public void setTabUnselectedColor( Color color )
    {

    }

    public Color getTabUnselectedColor()
    {        

    }

Estos métodos serán para asignar los colores a los TABS en su estado SELECCIONADO y NO SELECCIONADO.

Set Get

Vista de métodos desde la paleta de propiedades

4. BlackTabbedPaneUI, para poder manipular la interfaz del JTabbedPane, debemos cambiar su Look and Feel, este se encuentra en la clase BasicTabbedPaneUI, puedes encontrar mucha información de sus propiedades y  métodos en la API Java de estos objetos.

La clase BlackTabbedPaneUI sera una extensión de TabbedPaneUI y del cual sobre escribiremos 3 métodos.

public class BlackTabbedPaneUI extends BasicTabbedPaneUI  { 

    @Override
    protected void paintTabBackground( Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected ) 
    {

    }

    @Override
    protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) 
    {
    }

    @Override
    protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex ) 
    {

    }

}

No hay que ser todo un conocedor de la lengua de shakespeare para darse cuenta para que son estos métodos, ¿o si? o.O

Segunda Parte

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Caja blanca: Prueba del camino básico

Caja blanca: Prueba del camino básico

La prueba del camino básico, es una prueba de “caja blanca” que consiste en verificar el código de nuestros...

Generador de números aleatorios UNIX

Generador de números aleatorios UNIX

El Método Congruencial Lineal Mixto es el más utilizado en simulación en computadoras digitales y esta basado en una rel...

Convertir objetos java en XML

Convertir objetos java en XML

Continuando con el estudio del meta lenguaje XML (Lenguaje de Marcado Extensible) bastante utilizado en el intercambio d...

Personalizar iconos de un JTree

Personalizar iconos de un JTree

JTree cuenta con métodos que nos permiten cambiar los iconos de cada nodo según su estado, sin embargo a veces esto no e...

Galeria de imagene en java

Galeria de imagene en java

En este tutorial crearemos una Galeria de Imagenes al estilo de javascript o flash con Java y el IDE Netbeans 6.9. 1. Cr...

Introducción a Python en Java

Introducción a Python en Java

Python es un lenguaje de programación interpretado,  de programación multiparadigma, ya que soporta orientación a objeto...

10 comentarios en “Personalizar JTabbedPane con Netbeans”

  1. Ruben dice:

    Hola, ya que empiezas con esto del tabbedPane ¿No sabes alguna manera para poder poner la forma de la pestaña? (algo así como con los jbutton personalizados con imagenes) Saludos.

    1. Mouse dice:

      claro que si campeón, es el próximo tutorial, no te lo pierdas 😉

  2. pier dice:

    Esta muy bueno che pero , seria bueno que hagas un video y tambien dejara el ejemplo para descargar …

    1. Mouse dice:

      el ejemplo para descarga esta al final 🙂

      quisiera hacer videotutoriales, se que es mucho mejor que estar leyendo, pero lastimosamente el internet en mi país es una porquería lo que hace que subir un video de 15 minutos en baja calidad se convierta en un martirio, lo siento tal vez en un futuro (espero no muy lejano)

      🙂

      1. Fred dice:

        tus tutoriales estan bien asi, pues muestras el codigo, y aparte compartes los proyectos, sigue adelante amigo, saludos!!! =)

  3. VIANEY VARGAS dice:

    amigo mouse tengo un error con todas las librerias que me descargo de tu pagina cuando las descargo se me muestran con el icono de netbeans ?? a que se debe eso?? se supone que debe aparecer con el icono de java ??

    1. Mouse dice:

      creo que es cosa de tu sistema, algo debió desconfigurarse :/

  4. AbrahamMnt dice:

    Hola Mouse, he seguido tu tutorial y vaya que me ha ayudado mucho.
    Pero me resulto un problema pequeño. Y Aprovechando me gustaría tener tu opinion sobre una duda que tengo… 😀

    1.- Todo sale perfecto al crear la librería, importarla a mi proyecto, el problema entra cuando ejecuto el programa, El colorContentBorder no es respetado en tiempo de Ejecución, sin embargo solo es visible desde la opción de “Preview Design”. No se a que se deba… tal vez tengo que modificar una propiedad o que crees que sea?
    Te Adjunto una imagen: http://min.us/lPLjTuVlZNBAx

    2.- Y sobre mi duda es la siguiente; Estoy desarrollando una aplicación de escritorio para una Biblioteca de tamaño mediano (cantidad de Libros y Registros por día). Esta es la primera vez que programo bajo Java; pues siempre lo he hecho en C# con MySQL. Últimamente empecé a usar SQLite junto con Java en apps de prueba. Bueno, la cosa es que quiero pedirte tu opinión sobre el rendimiento de las apps de escritorio usando SQLite. Crees que sea algo viable usarlo para mi proyecto?.

    Pues es todo, Muchas Gracias de antemano.
    Y te felicito por tu Blog & Comunidad!! Saludos !!

  5. AbrahamMnt dice:

    Hola de nuevo 😀 !
    Muse ya encontré la solución al problema. Se trataba del famoso Look & Feel!…
    Lo solucione así:

    public vntSistema() {
    try{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e)
    {
    }
    initComponents();

    }

    1. Crisitan dice:

      en donde habira que poner eso? para solucionarlo

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

En este post aprenderemos lo que es la clonación de objetos en java o lo que es lo mismo, generación de nuevas instancia...

El índice TIOBE (TIOBE, The Importance of Being Earnest – “La importancia de ser honesto” – refe...

SDKMAN! es una herramienta para la administración de versiones paralelas de varios programas de desarrollo de software c...

Continuando con el estudio del meta lenguaje XML (Lenguaje de Marcado Extensible) bastante utilizado en el intercambio d...

Android Bolivia

MAUS