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

Crear plantillas personalizadas para Netbeans

Crear plantillas personalizadas para Netbeans

Cuando llevamos tiempo programando vamos armando un librería personal de código que utilizamos con frecuencia en nuestro...

MVC Java y Base de Datos Tutorial

MVC Java y Base de Datos Tutorial

En post pasados [Ejemplo práctico de MVC java Swing con Netbeans, 3 en raya java con MVC y Netbeans , MVC: Modelo, Vista...

Tabla para inventarios de Entradas y Salidas

Tabla para inventarios de Entradas y Salidas

A veces navegando en la internet buscando novedades , investigando o simplemente perdiendo el tiempo 🙂 se encuentran cos...

Material Design: CardView (Tarjetas)

Material Design: CardView (Tarjetas)

Un CardView es parte de los estilos de Material Design y nos permite mostrar información dentro de tarjetas (Card), esta...

CRC32: Verificación de Redundancia Cíclica

CRC32: Verificación de Redundancia Cíclica

El CRC o Verificación de Redundancia Cíclica o Comprobación de redundancia cíclica  es una técnica utilizada para detect...

Detección de rostros con android

Detección de rostros con android

La API de Android ha ido evolucionado rápidamente y cada vez contiene más funcionalidades que hacen que desarrollar sist...

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

Si te gusta realizar tus propios memes o foto montajes pero tienes poca o nula experiencia en editores gráficos como Pho...

Los procedimientos almacenados no solo pueden retornar valores como números, cadenas, etc, sino también datos como los R...

XAMPP es un software para la gestión de base de datos, servidor web apache e interprete para lenguajes como php o perl....

En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la...

Android Bolivia

MAUS