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

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

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:

Listagem 1:Aplicando a Nimbus

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
}

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

Listagem 2: Aplicação da Nimbus por linha de comando

-Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

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

Listagem 3: Singleton com método estático para aplicação da Nimbus

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();
		}
	}
}

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:

Aparência da Nimbus

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.

JOptionPane com aparência do Motif

Figura 2: JOptionPane com aparência do Motif

JOptionPane com aparência da Nimbus

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.

Listagem 4: Trecho de código que utiliza o Look And Feel

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();
		}
	}

Maiores informações sobre a Nimbus: erFeatures/nimbus_laf.html

Abraços a todos.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?