Usando a Interface Nimbus de Look And Feel para suas aplicações Swing

A mais nova interface Look And Feel multipliataforma implementada a partir da versão do Java SE 6 atualização 10.

Não é de hoje que temos visto que o Java evolui a olhos vistos, apesar de muitos de nossos colegas de profissão falarem mal do Java dizendo que programação GUI nesta linguagem tem sido assaz complicada e bastante confusa. Porém, nem tudo são espinhos, o Swing veio em substituição ao AWT, o que nos diz que sempre houve evolução na plataforma SE. Pois então, agora temos outra novidade para Look and Feel para ser utilizada com o Swing e o que melhora.

Diante desta onda de Look and Feels existentes na Internet, sempre utilizei esta Look desde que fora publicada, a Nimbus.

Para aplicar a Nimbus é muito simples, basta adicionar o seguinte trecho em seu código:

try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (UnsupportedLookAndFeelException e) { // handle exception } catch (ClassNotFoundException e) { // handle exception } catch (InstantiationException e) { // handle exception } catch (IllegalAccessException e) { // handle exception }
Listagem 1. Aplicando a Nimbus

Ou se quiser, pode ser via Linha de Comando durante a execução de sua aplicação:

-Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
Listagem 2. Aplicação da Nimbus por linha de comando

Porém, para facilitar eu criaei uma Singleton com um método estático:

import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.UnsupportedLookAndFeelException; /** * Classe de Aplicação do Look and Feel GUI * Nimbus * @author Gabriel * */ public class AplicaNimbusLookAndFeel { private AplicaNimbusLookAndFeel() { } public static void pegaNimbus() { try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (UnsupportedLookAndFeelException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } catch (ClassNotFoundException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } catch (InstantiationException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } catch (IllegalAccessException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } } }
Listagem 3. Singleton com método estático para aplicação da Nimbus

Neste ponto você já deve estar interessado em saber como ficou a aparência da aplicação, diante desta curiosidade, vou mostrar aqui um exemplo de como é a aparência deste Look And Feel:

Figura 1. Aparência da Nimbus

O código aqui exposto pode ser utilizado para aplicar qualquer Look And Feel que você deseje em suas aplicações.

Mostro agora a diferença e entre uma JOptionPane com o Motif - Look padrão do Swing - e outra com o Nimbus.

Figura 2. JOptionPane com aparência do Motif
Figura 3. JOptionPane com aparência da Nimbus

Viu só a diferença? Espero que lhe auxilie no design de seus formulários.

Copio abaixo, o código fonte do aplicativo retirado do Livro Java - Como Programar, dos Irmãos Deitel e da Editora Pearson apenas como exemplo para uma “degustação" da Nimbus. Posto que até os irmãos Deitel o adotaram na 8ª edição deste livro.

public class Soma { public static void main(String[] args){ //Aplica o Nimbus AplicaNimbusLookAndFeel.pegaNimbus(); //Obtém a entrada de usuário a partir dos diálogos de entrada JOptionPane String primeiroNumero = JOptionPane.showInputDialog("Entre o primeiro numero Inteiro: "); String segundoNumero = JOptionPane.showInputDialog("Entre o segundo numero Inteiro: "); //Converte String em valores int para a utilizado em um calculo Integer numero1 = Integer.parseInt(primeiroNumero); Integer numero2 = Integer.parseInt(segundoNumero); Integer soma = numero1 + numero2; //Exibe o resultado em um diálogo de mansagem JOptionPane //Icones para JOptionPane //Usando a Classe JOptionPane JOptionPane.showMessageDialog(null,"A soma e: " + soma, "Soma entre dois inteiros",JOptionPane.PLAIN_MESSAGE); }//Fim do método Main }//Fim da Classe Soma - Singleton para aplicação do Nimbus: public class AplicaNimbusLookAndFeel { private AplicaNimbusLookAndFeel() { } public static void pegaNimbus() { try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (UnsupportedLookAndFeelException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } catch (ClassNotFoundException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } catch (InstantiationException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } catch (IllegalAccessException e) { System.out.println("Erro: " + e.getMessage()); e.printStackTrace(); } }
Listagem 4. Trecho de código que utiliza o Look And Feel
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados