Uso básico de elementos Swing con NetBeans – 17 – Uso de LookAndFeel con JFrame e icono personalizado para formulario.

En esta guía veremos la forma de modificar de manera fácil el aspecto de nuestro formulario utilizando LookAndFeel, también le asignaremos un icono personalizado.
Diseñamos un formulario utilizando un JFrame (Nombre del formulario UsoJFrame). Utilizamos tres botones de comando para poder aplicar cada uno de los LookAndFeel, solo se mencionan tres, las más habituales, hay muchas más. También agregamos un botón de comando con la cual podremos salir del formulario sin utilizar el modo habitual. En la imagen siguiente vemos el diseño de nuestro formulario, cada elemento tiene un nombre de variable como se especifica en la imagen, tomar en cuenta este punto ya que es necesario para referenciar los objetos. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho sobre la misma y clic en “Cambiar nombre de variable…”. (clic sobre la imagen para ampliar)
Antes de continuar vemos que importaciones debemos de tener para utilizar ciertos elementos en nuestro formulario.

Lista de Importaciones.

Código Java
import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;

Códigos utilizados en el constructor.

Código Java
        //Centrar formulario
setLocationRelativeTo(null);
//Especificar un icono para nuestro formulario
setIconImage(new ImageIcon(ClassLoader.getSystemResource("com/swing/basic/img/Login.png")).getImage());
//Título para el formulario
setTitle("Uso de JFrame.");
En esta guía los códigos se ejecutarán desde el evento asignado a cada botón sin crea métodos. Para los botones como siempre se utiliza el evento “ActionPerformed”, en guías anteriores de esta serie vimos como se implementan los eventos. Seguido los eventos con la explicación de las líneas de código.
Código Java
    private void jWinActionPerformed(java.awt.event.ActionEvent evt) {                                     
//Se requiere try-catch, es predeterminado
try {
//Forma de localizar el LookAndFeel
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
//Entre comillas ("Windows") el nombre del LookAndFeel
if ("Windows".equals(info.getName())) {
//Asignamos el LookAndFeel
javax.swing.UIManager.setLookAndFeel(info.getClassName());
//Recargamos la el formulario para que se vea el cambio
SwingUtilities.updateComponentTreeUI(this);
//Se reagrupan los componentes
this.pack();
//Se sale del bucle for
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}

private void jNimActionPerformed(java.awt.event.ActionEvent evt) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
SwingUtilities.updateComponentTreeUI(this);
this.pack();
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}

private void jMetActionPerformed(java.awt.event.ActionEvent evt) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Metal".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
SwingUtilities.updateComponentTreeUI(this);
this.pack();
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(UsoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}

private void cerrarActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
Llegado a esta parte podremos ejecutar nuestro formulario. (Por si hay alguna duda en el proceso, debemos hacer clic derecho sobre nuestro archivo fuente y presionar “ejecutar archivo” ya que nuestro proyecto no tiene una clase principal definida)

No hay comentarios :

Publicar un comentario