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.
¿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:
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, BlackTabbedPane y BlackTabbedPaneUI. 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.
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
En muchas ocasiones es necesaria la personalización de componentes java para que estos se adecuen a nuestros requerimien[...]
La Belleza está en la Simetría ¿Qué es lo que nos hace considerar un rostro bello? ¿Está influenciado nuestro criterio p[...]
En este tutorial conoceremos una forma de conectar una aplicación en Laravel con tres bases de datos diferentes, 2 en My[...]
Como habíamos mencionado en un anterior post Ejemplo socket java Cliente/Servidor , el lenguaje de programación entre el[...]
En este post dejo una forma de como utilizar imágenes en un JTable ademas de implementar MouseListener para realizar dif[...]
¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames[...]