Primeiro Form mudando themes

9 respostas
matheusssilva

bem gente, depois de muito penar no estudo básicos e de orientação a objetos em java comecei a migrar um de meus sistemas feito em clipper para java. então espero poder contar com vcs para as muitas dúvidas que surgirão com relação a interface gráfica. como pesquisei no fórum e não encontrei nada a respeito resolvi criar esse tópico.

Seguinte, comecei primeiro criando a parte gráfica do sistema, melhor dizendo a tela principal. O que quero saber é o seguinte, como faço para mudar o theme das minhas janelas de ‘Metal’ que é o default para o theme ‘Nimbus’.
O theme Nimbus é um dos que podem ser selecionados na aplicação “FileChooserDemo” encontrada na pasta Demo do diretório jdk. (C:\Arquivos de programas\Java\jdk1.6.0_14\demo\jfc\FileChooserDemo\FileChooserDemo.jar).

No diretório também existe o código fonte da aplicação, mas para ser franco eu li e não consegui identificar como é feita essa mudança no theme.
Quero ressaltar que o que eu quero não é dar poder ao usuário final para que ele possa mudar o tema e sim deixar o Nimbus como tema fixo para todas a minhas janelas sem que possa ser mudado.

Fico no aguardo.

Grato

9 Respostas

D

uma maneira de voce fazer isso eh colocar no metodo main da sua aplicação isso:

try {       
            UIManager.setLookAndFeel(new NimbusLookAndFeel());
        } catch (UnsupportedLookAndFeelException ulfe) {          
            ulfe.printStackTrace();
        }

[]´s

matheusssilva

Tem que importar algum pacote?

pq aqui ta dando erro

C:\Documents and Settings\Administrador\Meus documentos\JCreator Pro\MyProjects\Estoque\src\GUI\FramePrincipal.java:93: cannot find symbol
symbol  : class NimbusLookAndFeel
location: class GUI.FramePrincipal
        UIManager.setLookAndFeel(new NimbusLookAndFeel());  
                                     ^
1 error

Process completed
matheusssilva

:smiley: Blz, consegui, faltava apenas importar o pacote import com.sun.java.swing.plaf.nimbus.*;

deu certinho, valeu.

D

opa, isso eu esqueci de coloca o import, mas eh isso ae …

[]´s

matheusssilva

Ok! Tudo funcionando! Mas eu simplesmente copiei o código escrito acima e colei no meu main. Agora eu queria compreender o código. Tipo, que excessão está sendo tratada com o try catch?

UIManager é uma classe e setLookAndFeel é um metodo dela? Parece esta setando alguma coisa mas o que? Qual a função dessa classe e esse metodo?

vejo que está sendo iniciado com um new NimbusLookAndFeel();

Alguém poderia me explicar o código?

Grato mais uma vez.

R

Suas dúvidas estão explicadas no link abaixo:

http://java.sun.com/javase/6/docs/api/javax/swing/UIManager.html#setLookAndFeel(javax.swing.LookAndFeel)

As exceções que podem ocorrer ao usar setLookAndFeel() estão documentadas no link acima. UIManager é uma classe que auxilia o gerenciamento dos Look-And-Feels do framework Swing.

matheusssilva

Desculpem dar UP no tópico mas é q estou com problemas ainda relacionado a esse assunto.

Bem é o seguinte, a resposta do didiosam esta perfeita realmente acrescentando essas linha de código no main coloca toda a sua interface gráfica com o theme Nimbus, porém esse theme apresentou algumas anormalidades e acho que talvez incompatibilidades com alguns componentes swing. Quanto mudo para o default do java funciona normal.
Então como não quero nem posso perder tempo batendo cabeça para tentar arrumar esses problemas vou deixar no default mesmo que é o theme metal. Porém a unica coisa que quero mudar é o tema de cores, para o theme Emerald, esse theme pode ser visto também no programa SwingSet2 localizado na pasta demo do java. (C:\Arquivos de programas\Java\jdk1.6.0_14\demo\jfc\SwingSet2\SwingSet2.jar). Na pasta contem tb o código fonte mas devido a minha pouca experiência. não consegui entender muito bem.

Agradeço a ajuda.

E perdoem o up no tópico.

R

O look-and-feel Metal, que é gerenciado pela classe MetalLookAndFeel, dá suporte a "temas" que você pode usar para mudar alguns aspectos da interface, tais como as cores. Para aplicar um tema ao Metal, use o método setCurrentTheme() :

[url]http://java.sun.com/javase/6/docs/api/javax/swing/plaf/metal/MetalLookAndFeel.html#setCurrentTheme(javax.swing.plaf.metal.MetalTheme)[/url]

O tema Emerald disponível no SwingSet2 é uma aplicação desse conceito. Veja em seu disco rígido o arquivo a seguir:

C:\Arquivos de programas\Java\jdk1.6.0_14\demo\jfc\SwingSet2\src\EmeraldTheme.java

Uma instância da classe EmeraldTheme é passada ao método MetalLookAndFeel.setCurrentTheme() . Para ver exatamente como a passagem é feita, verifique o trecho abaixo do arquivo SwingSet2.java:

class ChangeThemeAction extends AbstractAction {
	SwingSet2 swingset;
	MetalTheme theme;
        protected ChangeThemeAction(SwingSet2 swingset, MetalTheme theme) {
            super("ChangeTheme");
	    this.swingset = swingset;
	    this.theme = theme;
        }

        public void actionPerformed(ActionEvent e) {
	    MetalLookAndFeel.setCurrentTheme(theme);
	    swingset.updateLookAndFeel();
	}
    }
matheusssilva

Show de bola tio.

Entendi, e já implementei aqui.

Valeu pela informação.

Criado 11 de junho de 2009
Ultima resposta 17 de jun. de 2009
Respostas 9
Participantes 3