Bom dia galera!
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
[quote=lucasgcp]Bom dia galera!
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[/quote]
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:
import java.awt.Component;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
/**
* @author Ivan Alves
* Criado em 15/12/2010
*/
public class MudarVisual {
//variaveis staticas finais
public static final int VISUALJAVA = 1;
public static final int VISUALSO = 2;
public static final int VISUALNIMBUS = 3;
public static final int VISUALLIQUID = 4;
//visual JTattoo
public static final int VISUALJTATTOOAERO = 5;
public static final int VISUALJTATTOONOIRE = 6;
/////////////////////////////////////////////////////////////////////
//Estilo de visualização
public static boolean lookAndFeel(Component comp, int visual) {
boolean mudou = true; //se mudar o visual manda true senão false
try {
switch (visual) {
case VISUALJAVA:UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
break;
case VISUALSO: UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
break;
case VISUALNIMBUS:
mudou = false;
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
mudou = true;
break;
}
}
break;
case VISUALLIQUID: UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
break;
case VISUALJTATTOOAERO: UIManager.setLookAndFeel("com.jtattoo.plaf.aero.AeroLookAndFeel");
break;
case VISUALJTATTOONOIRE: UIManager.setLookAndFeel("com.jtattoo.plaf.noire.NoireLookAndFeel");
break;
}
//adiciona look and feel ao componente
SwingUtilities.updateComponentTreeUI(comp);
} catch (Exception ex) {
mudou = false;
}
return mudou;
}
}
para chama-la faça isso mandando seu componente no caso o botão como parametro:
MudarVisual.lookAndFeel(seuComponente, MudarVisual.VISUALNIMBUS);
flw…
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!
[quote=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![/quote]
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.
Minha chamada foi exatamente igual a sua:
MudarVisual.lookAndFeel(menuBar, MudarVisual.VISUALNIMBUS);
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…
[quote=lucasgcp]Minha chamada foi exatamente igual a sua:
MudarVisual.lookAndFeel(menuBar, MudarVisual.VISUALNIMBUS);
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…[/quote]
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!
O problema era justamente esse… Tava setando o look enquanto estava criando… Setendo apos tudo criado funcionou certinho!
Brigadao Ivan!
[]'s
Flw, se precisar estamos ai!