Gostaria de saber se alguem ja consguiu definir um look and feel apenas para um elemento.
Por exemplo,
gostaria de fazer com que meu botao siga o look and feel do JGoodies, mas nao gostaria que o JMenuBar tambem o seguisse.
Alguem ja vez isso ou tem ideia de como fazer?
Obrigado!
[]'s
Tem jeito sim mas as vezes ocorrem alguns bugs dependendo do look and feel, quando uso look and feel deixo uma classe separada com metodo statico para fazer isso se quiser é essa aqui:
importjava.awt.Component;importjavax.swing.SwingUtilities;importjavax.swing.UIManager;importjavax.swing.UIManager.LookAndFeelInfo;/** * @author Ivan Alves * Criado em 15/12/2010 */publicclassMudarVisual{//variaveis staticas finaispublicstaticfinalintVISUALJAVA=1;publicstaticfinalintVISUALSO=2;publicstaticfinalintVISUALNIMBUS=3;publicstaticfinalintVISUALLIQUID=4;//visual JTattoopublicstaticfinalintVISUALJTATTOOAERO=5;publicstaticfinalintVISUALJTATTOONOIRE=6;///////////////////////////////////////////////////////////////////////Estilo de visualizaçãopublicstaticbooleanlookAndFeel(Componentcomp,intvisual){booleanmudou=true;//se mudar o visual manda true senão falsetry{switch(visual){caseVISUALJAVA:UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());break;caseVISUALSO:UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());break;caseVISUALNIMBUS:mudou=false;for(LookAndFeelInfoinfo:UIManager.getInstalledLookAndFeels()){if("Nimbus".equals(info.getName())){UIManager.setLookAndFeel(info.getClassName());mudou=true;break;}}break;caseVISUALLIQUID:UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");break;caseVISUALJTATTOOAERO:UIManager.setLookAndFeel("com.jtattoo.plaf.aero.AeroLookAndFeel");break;caseVISUALJTATTOONOIRE:UIManager.setLookAndFeel("com.jtattoo.plaf.noire.NoireLookAndFeel");break;}//adiciona look and feel ao componenteSwingUtilities.updateComponentTreeUI(comp);}catch(Exceptionex){mudou=false;}returnmudou;}}
para chama-la faça isso mandando seu componente no caso o botão como parametro:
Tentei usar sua classe aqui mais ta dando excessao…
=/
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.jgoodies.looks.plastic.PlasticComboBoxButton.paintComponent(PlasticComboBoxButton.java:210)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
Tem ideia do que pode ser?
Obrigado!
Ivan_Alves
lucasgcp:
Ola Ivan!
Obrigado pela resposta!
Tentei usar sua classe aqui mais ta dando excessao…
=/
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.jgoodies.looks.plastic.PlasticComboBoxButton.paintComponent(PlasticComboBoxButton.java:210)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
Tem ideia do que pode ser?
Obrigado!
Coloca a sua chamada ai, porque esse erro provavelmente é que você está tentando acessar uma propriedade de um objeto que é nula!
E quanto a minha classe o VISUALLIQUID, VISUALJTATTOOAERO, VISUALJTATTOOAERO, para chama-los você terá que baixar suas respectivas bibliotecas.
A unica coisa que alterei foi que adicionei o visual do JGoddies la na sua classe…
Ai na hora de carrega a tela ele nao mostra todos os componentes, e dispara aquele excessao…
Já tentou comentar essa linha da chamada do look and feel porque a exceção não deveria está ocorrendo ai, e so chame o look and feel após carregar todos os componentes de preferencia!
L
lucasgcp
O problema era justamente esse… Tava setando o look enquanto estava criando… Setendo apos tudo criado funcionou certinho!