[http://kolosso.nireblog.com/post/2008/04/04/java-lookfeel]
El método "getSystemLookAndFeelClassName()" devuelve el nombre de la clase Look&Feel que implementa el sistema nativo donde se está ejecutando la aplicación. Es por ello que el "skin" o Look&Feel de nuestra aplicación variará de acuerdo al Sistema Operativo en que esta se ejecute. Ahora bien, si esta misma aplicación la ejecutamos sobre otro Sistema Operativo entonces la aplicación tomará el formato y las características visuales de este.
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch (Exception e){e.printStackTrace();}
...o podemos utilizar estas otras líneas:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}catch (Exception e){e.printStackTrace();}
Cualquiera sea el caso siempre obtendremos el mismo resultado:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
}catch (Exception e){e.printStackTrace();}
El resultado que verían sería el siguiente:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");
}catch (Exception e){e.printStackTrace();}
A continuación podemos ver cómo nos queda nuestra ventana de pruebas:
La librería a importar en nuestro proyecto se puede descargar desde aquí:
InfoNode
El código a insertar en nuestro constructor de la ventana principal:
import javax.swing.UIManager;
import net.infonode.gui.laf.InfoNodeLookAndFeel; ......
try{
UIManager.setLookAndFeel(new InfoNodeLookAndFeel());
}catch (Exception e){e.printStackTrace();}
...obtendremos algo parecido a esto al ejecutar la aplicación:
La librería a importar en nuestro proyecto se puede descargar desde aquí:
Lipstik
El código a insertar en nuestro constructor de la forma principal:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel(new com.lipstikLF.LipstikLookAndFeel());
}catch (Exception e){e.printStackTrace();}
Al ejecutar nuestra aplicación observaremos algo como esto:
El código a insertar en el constructor de la forma principal es el siguiente:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("net.sourceforge.napkinlaf.NapkinLookAndFeel");
}catch (Exception e){e.printStackTrace();}
Obtendremos, al ejecutar la aplicación, algo sumamente novedoso y, hasta cierto punto de vista gracioso:
La librería a incluir en nuestro proyecto la podemos descargar desde:
NimROD
El código a insertar en el constructor del formulario principal es.
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel");
}catch (Exception e){e.printStackTrace();}
...obtendremos algo como esto al compilar y ejecutar la aplicación:
public void setConexion(Connection conexion) { this.conexion = conexion; }
import java.sql.*; import javax.swing.JOptionPane; /** * * @author radioidioteke */ public class Conexion { //Declaramos los objetos para trabajar con bd private java.sql.Connection conexion; private java.sql.Statement sentencia; private java.sql.ResultSet resultado; public void conectar() { try{ String controlador="com.mysql.jdbc.Driver"; Class.forName(controlador); } catch(ClassNotFoundException e) {JOptionPane.showMessageDialog(null, "Error en la carga del driver jdbc");} //Crear la conexion try{ String url_bd="jdbc:mysql://localhost:3306/nombreDeTuBaseDeDatos"; String user="root"; //El nombre de usuario mySql String clave="root"; //contraseña mySql la que pones cuando instalas mySql conexion = java.sql.DriverManager.getConnection(url_bd,user,clave); sentencia = conexion.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_UPDATABLE); JOptionPane.showMessageDialog(null, "Conexion realizada exitosamente"); } catch(SQLException e) {JOptionPane.showMessageDialog(null, "Error al crear conexion con la BD");} }//Fin metodo conectar //Metodo desconectar public void desconexion() { try{ if(conexion!=null){conexion.close();} if(sentencia!=null){sentencia.close();} if(resultado!=null){resultado.close();} } catch(SQLException e) {JOptionPane.showMessageDialog(null, "Error al intentar la desconexion");} }//fin metodo desconectar //accesores y mutadores de los objetos conexion sentencia y resultado public Connection getConexion() { return conexion; } public void setConexion(Connection conexion) { this.conexion = conexion; } public ResultSet getResultado() { return resultado; } public void setResultado(ResultSet resultado) { this.resultado = resultado; } public Statement getSentencia() { return sentencia; } public void setSentencia(Statement sentencia) { this.sentencia = sentencia; } }
Para Java existen muchos y diferentes Look&Feel. Algunos son gratis y "open source", otros son propietarios, por lo que para usarlos se deberá pagar una cierta cantidad de dinero y adquirir una licencia de uso.
Comúnmente las ventanas en Java tienen un aspecto y estilos propio pero este se puede cambiar fácilmente si se tiene solamente dos cosas a la mano: una librería adecuada creada con el propósito de cambiar el Look&Feel de Java y una sola línea de código...
El Look&Feel de nuestras aplicaciones Java varía de acuerdo a la plataforma que se use si se escoge el Look&Feel propio del Sistema Operativo; de esta forma podemos desarrollar una aplicación Java sobre la plataforma Windows y mientras la estemos desarrollando la observamos con el Look&Feel propio de Windows:
...esto se logra insertando el siguiente código antes de crear cualquiera de nuestras ventanas:
<
pre
class
=
"brush: java"
>
import javax.swing.UIManager;
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e){
e.printStackTrace();
}
e.printStackTrace();
}
</
pre
>
El método "getSystemLookAndFeelClassName()" devuelve el nombre de la clase Look&Feel que implementa el sistema nativo donde se está ejecutando la aplicación. Es por ello que el "skin" o Look&Feel de nuestra aplicación variará de acuerdo al Sistema Operativo en que esta se ejecute. Ahora bien, si esta misma aplicación la ejecutamos sobre otro Sistema Operativo entonces la aplicación tomará el formato y las características visuales de este.
PONER LOS LOOK&FEEL QUE VIENEN CON JAVA
Java nos permite modificar el Look&Feel de nuestra aplicación utilizando algunos de los Look&Feel que vienen implementados en el JDK y JRE y son proveídos por Sun MicroSystems.
Algunos de estos son:
- Metal Look&Feel (El Look&Feel por defecto de Java)
- Motif Look&Feel (El Look&Feel poe defecto de Solaris)
Metal Look&Feel
Este "skin" es el Look&Feel por defecto de Java y podemos lograr que nuestra aplicación luzca de esta forma utilizando las siguientes líneas de código en el constructor de nuestra ventana:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch (Exception e){e.printStackTrace();}
...o podemos utilizar estas otras líneas:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}catch (Exception e){e.printStackTrace();}
Cualquiera sea el caso siempre obtendremos el mismo resultado:
Motif Look&Feel
Este Look&Feel es el que por defecto trae Solaris y podemos simularlo para nuestra ventana de prueba que se está desarrollando sobre Windows utilizando el siguiente código:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
}catch (Exception e){e.printStackTrace();}
El resultado que verían sería el siguiente:
PONIENDO LOOK&FEEL PROPIOS
Como había dicho al principio existen muchos Look&Feel que podríamos utilizar para darle el aspecto que queramos a nuetras aplicaciones.
En Javootoo podemos encontrar una selección de algunos Look&Feel gratis y pagos. Acontinuación haré mención de algunos de ellos y les mostraré algunas instantáneas de como luce nuestra ventana de pruebas con estos Look&Feel.
TinyLaf Look&Feel
Este Look&Feel es de los que más me gusta. La licencia es GNU LGPL y soporta aplicaciones desarrolladas a partir de el JDK 1.4+
El JAR a incluir en nuestra aplicación se puede descargar desde:
Después de haberlo descargado solo tenemos que importarlo a nuestro proyecto y en el constructor de nuestra forma(Frame) principal insertamos estas líneas de código:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");
}catch (Exception e){e.printStackTrace();}
A continuación podemos ver cómo nos queda nuestra ventana de pruebas:
InfoNode Look and Feel
Look&Feel basado en el Metal Look&Feel. Tiene licencia dual: GPL y Comercial.La librería a importar en nuestro proyecto se puede descargar desde aquí:
InfoNode
El código a insertar en nuestro constructor de la ventana principal:
import javax.swing.UIManager;
import net.infonode.gui.laf.InfoNodeLookAndFeel; ......
try{
UIManager.setLookAndFeel(new InfoNodeLookAndFeel());
}catch (Exception e){e.printStackTrace();}
...obtendremos algo parecido a esto al ejecutar la aplicación:
Lipstik Look&Feel
Look&Feel bajo licencia GPL2 que soporta aplicaciones desarrolladas a partir del JDK 1.4 y superiores.La librería a importar en nuestro proyecto se puede descargar desde aquí:
Lipstik
El código a insertar en nuestro constructor de la forma principal:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel(new com.lipstikLF.LipstikLookAndFeel());
}catch (Exception e){e.printStackTrace();}
Al ejecutar nuestra aplicación observaremos algo como esto:
Napkin Look&Feel
Look&Feel bajo licencia BSD que da la impresión de que nuestra aplicación Java parece estar hecha de una servilleta :)
La librería a descargar para incluir en nuestro proyecto la podemos encontrar aquí:
Napkin El código a insertar en el constructor de la forma principal es el siguiente:
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("net.sourceforge.napkinlaf.NapkinLookAndFeel");
}catch (Exception e){e.printStackTrace();}
Obtendremos, al ejecutar la aplicación, algo sumamente novedoso y, hasta cierto punto de vista gracioso:
NimROD Look&Feel
Look&Feel bajo licencia LGPL y que soporta aplicaciones Java a partir del JDK 1.5+La librería a incluir en nuestro proyecto la podemos descargar desde:
NimROD
El código a insertar en el constructor del formulario principal es.
import javax.swing.UIManager; ......
try{
UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel");
}catch (Exception e){e.printStackTrace();}
...obtendremos algo como esto al compilar y ejecutar la aplicación:
EN RESUMEN
Los Look&Feel en Java pueden ser considerados herramientas muy útiles que permiten personalizar su aplicación al modo que usted prefiera. No solamente puede emplear los Look&Feel que ya están hecho sino que puede desarrollar los suyos propios. Claro, esto conllevaría un gran esfuerzo por parte del desarrollador y, además, tener conocimientos de programación Java 2d y de las primitivas gráficas de Java.
En Javootoo se pueden encontrar muchos otros Look&Feel que podrían servirle para brindar un aspecto más o menos profesional a su aplicación Java en dependencia de cual escoja.
Es importante conocer que no todos los Look&Feel aquí mencionados son sumamente estables y algunos tienen problemas a la hora de tratar de representar ciertos componentes Swing, pero lo cierto es que resulta una alternativa sumamente buena y apreciable poder contar con todos estos "skins" para nuestras aplicaciones Java.
TIP
Se debe tener cuidado a la hora de invocar el método setLookAndFeel de la clase UIManager ya que muchas personas cometen el error de invocar este método en el constructor de un JFrame después de haber realizado la llamada al método initComponents() y quedan asombrados de ver que el Look&Feel de la aplicación no ha cambiado de forma según usted especificó. El problema es que el método initComponents() crea e inicializa los objetos(botones, combos, etc.) que existen en el Frame principal con el Look&Feel que, supuestamente, se debe haber definido antes de llamarse este, y como usted ha invocado al método setLookAndFeel() después de haberse ejecutado initComponents() entonces no se cargará la aplicación con el Look&Feel definido por usted. Invoque el método setLookAndFeel() antes de realizar la llamada al método initComponents().
0 comentarios:
Publicar un comentario