viernes, 28 de junio de 2013

Cambiar Look and Feel (Temas) en Aplicaciones JAVA (Estático y Dinámico)



Muchas veces hemos querido cambiar el aspecto de nuestras aplicaciones Java (En caso de crear alguna Interfaz Gráfica) ya que el tema METAL que usa por defecto no es muy vistoso que digamos, a esto se le conoce como Look And Feel.

En esta ocasión les mostraré como utilizar algunos de los temas que vienen por defecto junto con nuestro JDK, eso quiere decir que no necesitamos instalar ninguna librería ni nada por el estilo.

Les mostraré como realizar esto de manera Estática y Dinámica, ¿Qué quiere decir esto? La forma estática quiere decir que configuraremos un tema diferente al que java usa por defecto, este no se podrá cambiar durante la ejecución de la aplicación, así que si este es nuestro fin debemos realizarlo de este manera.

Por el contrario, si lo que deseamos es que nuestra interfaz pueda cambiar de tema las veces que queramos durante su ejecución; debemos optar por la forma Dinámica. Sin más rodeos vamos al grano.

Look and Feel Estático

No entraré en detalles sobre como crear una ventana o como agregar los componentes gráficos necesarios, pero funciona si utilizamos un IDE como Jcreator, Netbeans, Eclipse, etc.

Este es un ejemplo del tema denominado METAL que java utiliza por defecto


Para cambiarlo necesitamos colocar el siguiente código en el constructor de nuestra clase que representará la interfaz gráfica, por ejemplo al utilizar NetBeans, Agregamos un JFrame Form, se nos pedirá el nombre del mismo y listo, luego vamos al constructor de la clase que tiene el mismo nombre que le pusimos al JFrame y justo antes de la llamada el metodo initComponents() colocamos lo siguiente

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");          

Como argumento debemos pasarle el string que corresponde a los temas que vienen por defecto en el JDK, más adelante hablaremos sobre esto. La parte de UIManager nos la mostrará como error de sintaxis, solo necesitamos importar de la librería estándar de java el modulo UIManager (En el inicio de la clase y después de la sentencia package) y encerrar el código anterior dentro de una sentencia try-catch


Importando el modulo UIManager para poder utilizar nuestro tema
import javax.swing.UIManager;      


Sentencia para cambiar nuestro Look and Feel 
try{
  UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exception e){
  e.printStackTrace();
} 


Ahora corremos nuestra aplicación y veremos el resultado


Vemos como el aspecto de los componentes ha cambiado, similar a los componentes de los sistemas Microsoft Windows, si recuerdan el argumento que pasamos a la función setLookAndFeel()  era el siguiente: "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
El cual corresponde al tema de Windows, a continuación  les dejo el String y la imagen de como se ven los temas que se encuentran instalados en mi sistema


javax.swing.plaf.metal.MetalLookAndFeel




javax.swing.plaf.nimbus.NimbusLookAndFeel




com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel


Así que no nos queda más que colocar el que más nos guste y listo.



Look And Feel Dinámico

Para hacer que nuestra aplicación cambie entre todos los temas disponibles durante su ejecución definiremos una interfaz como la siguiente, lo más importante es un jComboBox y un jButton


el jComboBox nos servirá para mostrar todos los look and feel disponibles, a manera de solo seleccionarlo y al dar click al boton Cambiar Look que se aplique el que hayamos seleccionado

Debemos importar los siguientes modulos:

import javax.swing.UIManager;
import javax.swing.SwingUtilities;

El primero ya hemos visto que es necesario para seleccionar un look and feel especifico, y el segundo modulo nos servirá para actualizar los componentes una vez cambiado nuestro tema


Creamos una variable del tipo array  del tipo LookAndFeelInfo  el cual nos servirá para obtener todos los temas instalados

UIManager.LookAndFeelInfo[] lafinfo = UIManager.getInstalledLookAndFeels();


En el constructor de nuestra clase (antes del método InitComponents()), colocaremos un ciclo for para recorrer el array que declaramos anteriormente y   así almacenar en el jComboBox por medio de la funcion addItem; los nombres de los temas que contiene. Con System.out.println() mostraremos en la consola de NetBeans los temas instalados para poderlo copiar y pegar si deseamos cambiar el tema de manera estática (ver la primera parte al principio de este tutorial)

for (int i=0;i<lafinfo.length;i++){
    jComboBox1.addItem(lafinfo[i].getClassName());
    System.out.println(lafinfo[i].getClassName());
}



Ahora para finalizar, en el evento del Boton que agregamos a la interfaz (Doble click al boton en modo diseño si se utiliza NetBeans) colocamos las siguientes sentencias:

try{
    String look = jComboBox1.getSelectedItem().toString();
    UIManager.setLookAndFeel(look);
    SwingUtilities.updateComponentTreeUI(this);
    }catch(Exception e){
        e.printStackTrace();
    }

En la variable del tipo String llamada look obtendremos el nombre del tema que esté seleccionado en el jComboBox1, a continuación fijaremos el tema usando la función setLookAndFeel y pasando como argumento la cadena llamada look, y por ultimo con la sentencia updateComponentTreeUI() del modulo SwingUtilities actualizaremos el tema de los componentes, de no poner está ultima linea nuestra aplicación no aplicará el tema seleccionado.

Y así funcionará nuestra aplicación:






Seleccionamos en el jComboBox el tema que nos guste, y luego damos click en el botón Cambiar Look que ejecutará la porción de código que agregamos a su evento. Este ejemplo se los dejaré en ESTE ENLACE para que lo puedan probar, Deben abrirlo con Netbeans 7.3 y tener instalado el JDK 1.7 update 21, en dado caso no tuvieran alguno de estos dos, pueden bajarlo y abrir con un Notepad el archivo GUI.java  para verificar el código e implementarlo en el entorno que tengan ya que no utilicé ninguna herramienta especial de Netbeans o del JDK 7.... Esto es compatible desde el JDK 1.6.... espero que les sea de utilidad

miércoles, 5 de junio de 2013

Instalar java jdk7 .tar.gz en Debian/Ubuntu/Mint y derivados




Muchas veces nos hemos topado con la necesidad de instalar la herramienta para desarrolladores de java llamada jdk (Java Development Kit) o Kit de Desarrollo Java; la cual nos proporciona de un compilador un depurador, una maquina virtual JVM (Java Virtual Machine) y todas las librerias necesarias para desarrollar aplicaciones haciendo uso este lenguaje de programación orientado a objetos.

Pero a diferencia de las plataformas Windows donde unicamente nos descargamos el instalador, lo corremos  y damos click a siguiente en todas las ventanas que se nos muestre, en linux no hay un instalador para hacerlo de esta manera. Para poder instalarlo les presentaré este método que es uno de los más rápidos y efectivos que he encontrado y por supuesto que me han funcionado.

Pasos para instalar java jdk desde un archivo .tar.gz

Descargar jdk
Podemos descargar el jdk desde la Pagina Oficial de java (la última version es la 1.7.0_21 al momento de realizar está guía) Seleccionamos la Opcion Linux x86 o x64 Dependiendo de la arquitectura de nuestro sistema operativo (x86 para 32bit y x64 para 64bit) asegurandonos de que la extension sea .tar.gz ya que es la destinada para sistemas Debian,Ubuntu y Mint. Aceptamos la licencia y la descargamos



Una vez en el paquete .tar.gz se encuentre en nuestro escritorio Abrimos un Terminal (Ctrl + Alt + T) e ingresamos lo Siguiente

Configurar JDK

Extraemos el archivo

cd Escritorio
tar -xvf jdk-7u21-linux-x64.tar.gz

copiamos lo que acabamos de descomprimir en la ubicación /usr/lib

sudo mv jdk1.7.0_21 /usr/lib

se nos pedirá la contraseña, la ingresamos seguido de enter

Agregaremos nuestro nuevo jdk7 a la lista de alternativas (más adelante lo veremos)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk1.7.0_21/jre/bin/java 3

Ahora desplegaremos las diferentes instalaciones de java jdk que tengamos en nuestro sistema con el siguiente comando

sudo update-alternatives --config java

 y se nos mostrará una imagen como la siguiente




Debemos seleccionar de la lista que se despliega, Para este caso (el de la imagen) seria la Opcion 2 puesto que corresponde a la ruta donde acabamos de copiar la carpeta del jdk, ustedes podrían ver solo la que acaban de crear o incluso muchas más.

Para verificar la correcta instalación, en consola escribiremos el siguiente comando para verificar la version del mismo

java -version

y obtendremos un mensaje como el siguiente (la version que yo use para instalar es la 1.7.0 pero funciona de la misma manera con otras)


y listo ahora tenemos instalado todas las herramientas para desarrollar en java haciendo uso de cualquier IDE como por ejemplo Netbeans. Cualquier pregunta pueden comentar