Mudando o Look & Feel depois de iniciado

Dae pessoal

Eu finalmente consegui aprender a usar o Look & Feel mas só usando ele no método main, mas eu queria por ele numa opção de menu e o usuário mudasse em tempo real!!! Eu vi isso no site da sun mas não deu certo:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); SwingUtilities.updateComponentTreeUI(this); this.pack();

Mas coloquei ele no evento do menu e nada mudou, importei a classe java.lang.reflect mas mesmo assim não resultou em nada!!!

Alguém ae sabe!?

Valeu :!:

Flw

Pilantra 8)

Voce provavelmente nao ta tratando as excecoes direito - qual o stack trace?

O q o cv quer dizer eh se vc pôs num try-catch + ou-:

try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (InstantiationException e) {
      e.printStackTrace()...blablabla
    } catch (ClassNotFoundException e) {
    } catch (UnsupportedLookAndFeelException e) {
    } catch (IllegalAccessException e) {
    }

Vc quer um L&F dinâmico certo?Eu faço + ou - assim:
Declaro umas constantes com meus L&F´s:

protected static final String mac = "com.birosoft.liquid.LiquidLookAndFeel"; protected static final String metal = "javax.swing.plaf.metal.MetalLookAndFeel"; protected static final String skin = "com.l2fprod.gui.plaf.skin.SkinLookAndFeel"; protected static final String windows = "de.muntjak.tinylookandfeel.TinyLookAndFeel"; protected static final String kunststoff = "com.incors.plaf.kunststoff.KunststoffLookAndFeel";

Faço um método para “mudar a aparência”-agirá através dos radioButtons
selecionados!

/*
     * @method mudaAparencia mudará a aparência da tela principal do programa
     * @return void
     */   
   public void mudaAparencia(String aparencia){
   	      
     try {
        UIManager.setLookAndFeel(aparencia);
        SwingUtilities.updateComponentTreeUI(frame);        
     }
     catch (InstantiationException e) {  
       e.printStackTrace();    	
     }
     catch (ClassNotFoundException e) {
       e.printStackTrace(); 	
     }
     catch (UnsupportedLookAndFeelException e){
       e.printStackTrace(); 	
     }
     catch (IllegalAccessException e) {
       e.printStackTrace(); 	
       }
     
         frame.repaint();
        //frame.pack();-não usar!                
                                               }//fim de mudaAparencia()

implemento a interface ItemListener e no método itemStateChanged, faço assim:

public void itemStateChanged(ItemEvent e) {
      if(rbMenuItem[0].isSelected()){
      	 mudaAparencia(kunststoff);
	            }
      else if(rbMenuItem[1].isSelected())
      	  mudaAparencia(mac);  
      else if
         blablabala...
}

rbMenuItem[i] são radio buttons!
Sempre funciona… :wink:

este é o meu garoto :smiley:

Meu Deussss, eu vou testar cara, valeu!!! Deixando mudado no main é moleza, eu ainda tenho que estudar direito o try catch, estou vendo isso agora!!!

Valeu, vou fazer os testes e posto os resultados!!

Obrigado
T+

Pilantra 8)

[quote=Ironlynx]O q o cv quer dizer eh se vc pôs num try-catch + ou-:

try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (InstantiationException e) { e.printStackTrace()...blablabla } catch (ClassNotFoundException e) { } catch (UnsupportedLookAndFeelException e) { } catch (IllegalAccessException e) { } [/quote]

Dae amigo, deu certinho, eu acho que o problema era o repaint né?! Mas só teve um problema, os L&F skin, kunststoff e metal não funcionam, somente o GTK e um outro feio!!! O Windows só funciona no Windows mesmo, isso eu já testei agora pouco, o do Mac deve ser a mesma coisa!!! O GTK só funciona no Linux eu presumo!!!

Mas valeu mesmo colega!!
T+

Pilantra 8)

os L&F skin, kunststoff(não estão na jdk!), vc tem q ir na página deles baixar para usar com sua aplicação!O metal e dah versão 1.4 da JDK, agora é a ocean…
esses q eu coloquei eh só um exemplo… a maioria dos L&F vc tem q baixar…
Alguns:
http://www.javootoo.com/
http://www.l2fprod.com/

HUm que massa cara!!! Mas quando se compila o programa e passo pra outro usuário, essas L&F vão junto ou não?! Precisaria instalar no SDK do cara?!?!

Valeu
Flw

Pilantra 8)

Cara, perai, vc nao entendeu try/catch direito e ta se preocupando com Look’n’Feel da Swing? Isso nao eh jogar o carro na frente dos bois, eh jogar o carro EM CIMA dos bois, em trilho eletrificado :frowning:

Eu so estou tentando esclarecer as minhas dúvidas!!! :shock:
Try catch depois eu estudo com calma :roll:

Pilantra, o cv tah certo.
Isso(tratamento de exceções) é o básico da linguagem.Não saber o porquê acontece,quando e como, poderá(e dará!) problemas adiante.
Como sou seu amigo,leia:
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter03/exceptions.html
http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html

Bom o try catch eu estava entendendo mais ou menos, mas vou ler esses links!!

Gente dá uma folga pra mim também né?! Faz 3 semanas que comecei a programar em Java, eu estou vendo as coisas aos poucos!!! :wink:

Valeu
Flw

Pilantra 8)