Visual Java (Look And Feel) usando “substance”!!

11 10 2008

Fala galera da COMP. To postando aqui pra quem ta cansado do visual do Java.

O meu amigo Guga, me passou um site com uma Biblioteca chamada “substance.jar”, qual que é dessa Biblioteca?? Ela tem vários visuais novos para o Java, e outras coisas também.

Um dos Skins do Substance

Um dos Skins do Substance


Para quem quiser dar uma olhada, acesse o site oficial.

Bem vamos ao que interessa.

Primeiro passo e fazer o Download da Biblioteca “substance.jar” e incluí-la no seu projeto.
Agora vamos à parte mais complicada da mudança do visual.
Para disponibilizar as skins disponíveis da biblioteca substance, usaremos um objeto ArrayList para armazenar essas skins, ficando assim a nossa função:

private void adicionaSkins() {
          //Recupera todos os Skins possiveis do pack de Skins
          listaSkins = new ArrayList(SubstanceLookAndFeel.getAllSkins().values());
          //Adiciona o nome dos Skins no JComboBox
          for (int i = 0; i < listaSkins.size(); i++) {
                    jComboBox1.addItem(listaSkins.get(i).getDisplayName());
          }
}

No caso do código acima, foi utilizado um JComboBox para apresentar ao usuário as skins disponíveis.

Continuando… Após a apresentação dos visuais disponíveis para o usuário, quando ele escolher um temos que trocar, assim para realizar a mudança usamos o seguinte código:


//Dispara uma Thread para mudar o Skin que o usuário selecionou
    private void mudaSkin() {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // Pega do JComboBox o index do Skin selecionado, qeu no caso, é o mesmo do ArrayList.
                // Atribiu o nome da classe a essa String t.
                String t = listaSkins.get(jComboBox1.getSelectedIndex()).getClassName();
                // Seta a Skin nova pelo nome da classe da Skin
                SubstanceLookAndFeel.setSkin(t);
                repaint();// repaint para atualizar a tela.
            }
        });
    }

Como podemos ver no código acima, de acordo com o índex do JComboBox, o nome da classe é adquirido no nosso ArrayList de Skins, e atribuído ao visual do Java pela função: SubstanceLookAndFeel.setSkin(), passando como parâmetro o nome da classe. Colocando esse método como um evento de um JButton, ou outros, a Skin selecionada será aplicada ao visual do programa Java.

Então gente é isso, espero que tenham entendido como mudar o visual do seu programa Java, deixando mais bonito. “Hhahahah…”

IMPORTANTE

Para que funcione corretamente, seu objeto JFrame tem que ser instanciado como uma Thread, exemplo.


public static void main(String[] args) {
        // Permite mudar a barra com o fechar, maximizar etc...
        JFrame.setDefaultLookAndFeelDecorated(true);
        // Para criar a Thread
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                new SUACLASSEVISUAL().setVisible(true);
            }
        });
    }

A linha de código: JFrame.setDefaultLookAndFeelDecorated(true);, serve para que a barra com o ” _ [] X “, famoso minimizar, maximizar e fechar, também mude com o tema.
Então é isso…

[Vorti]


Ações

Informações

5 respostas

11 10 2008
Gustavo Nogueira de Oliveira

Muito bom post Vorti!!

Alterei um pouquinho… coloquei o MORE pra não ficar o post todo na primeira página e coloquei uma imagenzinha pra ajudar a galera a ver…

O texto ficou fenomenal!

Parabéns cara!

13 10 2008
Gabriel Massote Prado

Ao vorti…

sensacional mesmo…e parabens pela primeiro post no blog da galera.

abracao a todos

1 01 2009
13 11 2009
Márcio

Eu tentei adicionar este codigo em meu projeto, mas não deu resultado…
eu utilizo o eclipse e adicionei a biblioteca “Substance.jar” em meu projeto, mas quando tento executar o projeto ele acusa vários erros.
se possivel gostaria de receber um projeto que já esteja funcionando, tentei varias vezes sem sucesso.
pode ser um form simples; com o combobox que selecione os skins.
se alguém tiver, agradeço desde Já.

14 11 2009
Vorti

e ai Márcio, vc pode me passar os erros que estão aparecendo?? Me evnia no email, ou como preferir.
vc viu que para funcionar, sua classe JFrame tem que ser instanciada como uma nova thread.
Não tenho uma calsse pronta com isso, pois faz muito tempo que fiz isso.

Deixe um comentário