Trocar tema do Jframe (Baixando e Instalando e mudar os themes)[RESOLVIDO]

[i]Olaaaa Pessoal tudo bom ?

Pessoal do guj estou precisando saber a seguintes coisas :

Preciso saber como trocar o tema de um jFrame,ja sei que existe NimbusLookAndFeel(ja estou usando),eu sei que temos a opção de baixar e instalar na maquina alguns estilos,mais gostaria de saber como eu faço isso ?,ja dei uma olhada no material da sun,mais não consigo entender muita coisa precisaria de algum exemplo se possivel …

E também como muda o tema e deichar no estilo Ruby,ou Emerald,ou Charcoal no JFrame,ja vi os exemplos que vem junto com o JDK mais,mais uma vez não entendo muito o codigo …

Se poderem me ajudar agradeceria Muito …

Obrigadooo até mais ^^
[/i]

Nos meus projetos tenho utilizado jdesktoppane + substance, fica um resultado muito bom.

Então neste caso você faz o download do substance.jar mais o trident.jar no site https://substance.dev.java.net/ e adiciona à biblioteca do projeto.

E no jframe principal onde fica o jdesktoppane use o seguinte código:

[code] public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            try {

                UIManager.setLookAndFeel(new SubstanceRavenLookAndFeel());// aqui você altera os temas
            } catch (Exception e) {
                System.out.println("Substance Raven Graphite failed to initialize");
            }
            new Messenger().setVisible(true);
        }
    });
}[/code]

Me diz uma coisa Weverson, tem que configurar no classpath também?

Então R063r5 eu fiz oque vc flo so que esta dando erro na seguinte Linhaa

Aqui esta meu main para ter uma visão mais ampla do projeto:
Não sei se os encaixes dos codigos estão corretos

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
//import javax.swing.UnsupportedLookAndFeelException;
import org.jvnet.substance.skin.SubstanceRavenLookAndFeel;

public class Main {

    public static void main(String[] args) {
/*
            try {
        UIManager.setLookAndFeel(new NimbusLookAndFeel());
    } catch (UnsupportedLookAndFeelException ulfe) {
        ulfe.printStackTrace();
    }
*/
      JFrame.setDefaultLookAndFeelDecorated(true);
     SwingUtilities.invokeLater(new Runnable() {

         public void run() {
             try {

                 UIManager.setLookAndFeel(new SubstanceRavenLookAndFeel());// aqui você altera os temas
            } catch (Exception e) {
                 System.out.println("Substance Raven Graphite failed to initialize");
             }
             new Messenger().setVisible(true);
        }
    });

         JfrmChefe chefe = new JfrmChefe();
           chefe.setSize(600, 520);
	   chefe.setLocation(200,200);
	   chefe.setTitle("Tela Principal");
           chefe.setVisible(true);
           chefe.setResizable(false);
    }

}

e Aqui esta minha classe que contem minha janelaa:

import javax.swing.*;
import javax.swing.BorderFactory;
import java.awt.event.*;
import java.awt.*;
import javax.swing.border.*;

class JfrmChefe extends JFrame implements ActionListener {


    private JButton
            btnMoChefe1 = new JButton("<html><font size=4 color ='000080'><b> M.Chefe </b></font></html>"),
            btnChefe2   =  new JButton("<html><font size=4 color ='000080'><b> Cadastrar </b></font></html>"),
            btnChefe3   = new JButton("<html><font size=4 color ='000080'><b> Mostrar </b></font></html>"),

            btnMoTrab1 = new JButton("<html><font size=4 color ='000080'><b> M.Trabalhador </b></font></html>"),
            btnTraba2   =  new JButton("<html><font size=4 color ='000080'><b> Cadastrar </b></font></html>"),
            btnTraba3   = new JButton("<html><font size=4 color ='000080'><b> Mostrar </b></font></html>");

    private JPanel
            layoutPri = new JPanel(),
            layoutSub = new JPanel(),
            layoutChefe = new JPanel(),
            layoutTrab = new JPanel();

    private JLabel
       lblPri = new JLabel("<html><font size = 6 color ='000080' ><b>Laboratorio de Informática SM</b></font></html>"),
       lblSub = new JLabel("<html><font size = 5 color ='000080' ><b>Cadastro</b></font></html>"),
       lblChefe1 = new JLabel("<html><font size = 4 color ='000080' ><b>Nome: </b></font></html>"),
       lblChefe2 = new JLabel("<html><font size = 4 color ='000080' ><b>Salario: </b></font></html>"),
       lblChefe3 = new JLabel("<html><font size = 3 color ='000080' ><b>PagamentAdd:</b></font></html>"),
       lblTraba1 = new JLabel("<html><font size = 4 color ='000080' ><b>Nome: </b></font></html>"),
       lblTraba2 = new JLabel("<html><font size = 4 color ='000080' ><b>Salario: </b></font></html>");

 private JTextField
       txtChefe1 = new JTextField(40),
       txtChefe2 = new JTextField(40),
       txtChefe3 = new JTextField(40),
       txtTraba1 = new JTextField(40),
       txtTraba2 = new JTextField(40);


    public JfrmChefe(){

      setDefaultCloseOperation(EXIT_ON_CLOSE);
      layoutPri.setLayout(new FlowLayout());
      layoutSub.setLayout(new FlowLayout());
      layoutChefe.setLayout(null);
      layoutTrab.setLayout(null);

    getContentPane().setBackground(Color.gray);

     layoutPri.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
     layoutPri.setBackground(Color.LIGHT_GRAY);
     layoutSub.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
     layoutSub.setBackground(Color.LIGHT_GRAY);
     layoutChefe.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
     layoutTrab.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
     //pAut3.setBackground(Color.LIGHT_GRAY);

     layoutPri.add(lblPri);
     layoutPri.setBounds(1,5,593,40);
     layoutSub.add(lblSub);
     layoutSub.setBounds(80,44,420,40);
//================CHEFE============================
     layoutChefe.add(txtChefe1);
     txtChefe1.setBounds(70, 50, 100, 25);
     txtChefe1.setFont(new Font("Candara",Font.BOLD,15));

     layoutChefe.add(lblChefe1);
     lblChefe1.setBounds(25, 50, 100, 25);
//=================================================
     layoutChefe.add(txtChefe2);
     txtChefe2.setBounds(77, 100, 100, 25);
     txtChefe2.setFont(new Font("Candara",Font.BOLD,15));

      layoutChefe.add(lblChefe2);
      lblChefe2.setBounds(25, 100, 100, 25);
//=================================================
      layoutChefe.add(txtChefe3);
      txtChefe3.setBounds(89, 150, 100, 25);
      txtChefe3.setFont(new Font("Candara",Font.BOLD,15));

      layoutChefe.add(lblChefe3);
      lblChefe3.setBounds(5,150,100,25);
//=================================================
      layoutChefe.add(btnChefe2);
      btnChefe2.setBackground(Color.LIGHT_GRAY);
      btnChefe2.setBounds(65,190,120,30);

      layoutChefe.add(btnChefe3);
      btnChefe3.setBackground(Color.LIGHT_GRAY);
      btnChefe3.setBounds(65,230,120,30);

      layoutChefe.setBounds(170, 150, 250,280);
//================FIM=CHEFE========================

//===============TRABALHADOR=======================
      layoutTrab.add(txtTraba1);
      txtTraba1.setBounds(70, 50, 100, 25);
      txtTraba1.setFont(new Font("Candara",Font.BOLD,15));

      layoutTrab.add(lblTraba1);
      lblTraba1.setBounds(25, 50, 100, 25);
//=================================================
      layoutTrab.add(txtTraba2);
      txtTraba2.setBounds(78, 100, 100, 25);
      txtTraba2.setFont(new Font("Candara",Font.BOLD,15));

      layoutTrab.add(lblTraba2);
      lblTraba2.setBounds(25, 100, 100, 25);
//=================================================
     layoutTrab.add(btnTraba2);
     btnTraba2.setBackground(Color.LIGHT_GRAY);
     btnTraba2.setBounds(65, 190, 120, 30);

     layoutTrab.add(btnTraba3);
     btnTraba3.setBackground(Color.LIGHT_GRAY);
     btnTraba3.setBounds(65, 230, 120, 30);

     layoutTrab.setBounds(170, 150, 250,280);
//===============FIM=TRABALHADOR===================
     getContentPane().add(layoutPri);
     getContentPane().add(layoutSub);
     getContentPane().add(layoutChefe);
     getContentPane().add(layoutTrab);

     getContentPane().add(btnMoChefe1);
     btnMoChefe1.setBackground(Color.LIGHT_GRAY);
     btnMoChefe1.setBounds(300, 100, 150, 30);

     getContentPane().add(btnMoTrab1);
     btnMoTrab1.setBackground(Color.LIGHT_GRAY);
     btnMoTrab1.setBounds(90, 100, 150, 30);

       btnMoChefe1.addActionListener(this);
       btnChefe2.addActionListener(this);
       btnChefe3.addActionListener(this);
       btnMoTrab1.addActionListener(this);
       btnTraba2.addActionListener(this);
       btnTraba3.addActionListener(this);

layoutChefe.setVisible(false);
layoutTrab.setVisible(false);
getContentPane().setLayout(null);
    }
 Administrador chef = new Administrador();
 Administrador trab = new Administrador();

public void actionPerformed(ActionEvent evento){
//====================CHEFE================================
if(evento.getSource() == btnMoChefe1){
 layoutTrab.setVisible(false);
layoutChefe.setVisible(true);}
if(evento.getSource() == btnChefe2){
     String nome = txtChefe1.getText();
     Float salario = Float.parseFloat(txtChefe2.getText());
     Float salarioAdd =Float.parseFloat(txtChefe3.getText());
     Chefe chefe = new Chefe(nome,salario,salarioAdd);
     chef.add(chefe);
}
if(evento.getSource() == btnChefe3)
JOptionPane.showMessageDialog(null,chef.mostraChefe());
//=============TRABALHADOR=================================
if(evento.getSource() == btnMoTrab1){
    layoutChefe.setVisible(false);
    layoutTrab.setVisible(true);}
if(evento.getSource() == btnTraba2){
    String nome = txtTraba1.getText();
Float salario = Float.parseFloat(txtTraba2.getText());
Trabalhador trabalhador = new Trabalhador(nome,salario);
trab.add(trabalhador);
 }
if(evento.getSource() == btnTraba3)
JOptionPane.showMessageDialog(null,trab.mostraTrab());
}

}

Então Marcos como eu so meio iniciante na parte grafica eu não sei te dize bem =/

Obrigado pela ajudaaa ^^

Então ficou assim:

[code]
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.pushingpixels.substance.api.skin.SubstanceRavenLookAndFeel;

public class Main {

public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            try {

                UIManager.setLookAndFeel(new SubstanceRavenLookAndFeel());// aqui você altera os temas
            } catch (Exception e) {
                System.out.println("Substance Raven Graphite failed to initialize");
            }
            JfrmChefe chefe = new JfrmChefe();
            chefe.setSize(600, 520);
            chefe.setLocation(200, 200);
            chefe.setTitle("Tela Principal");
            chefe.setVisible(true);
            chefe.setResizable(false);
        }
    });
}

}[/code]

O erro estava ocorrendo naquela linha porque você não está usando um JFrame chamado Messenger e sim JfrmChefe.

No caso eu configuro na IDE, e adiciono à biblioteca os arquivos .jar do substance, sem precisar configurar manualmente o classpath.

ok R063r5 irei testar nesse momento …

[i]Enntão Cara muito Obrigado pela Ajudaaa …

mais assim roda até que rodo aparecee o tema e tals,mais quando eu compilo com alguns temas não são todos(mais a maioria) aparece esses erros,sem conta que acontece de abrir duas janelas igual a minha uma customizada pela o thema que eu sseto e outra meio diferente quase igual a do começo do projeto,mais quando eu uzo outro tema fica de bouaaa
Estranhoooo oasksakasoksa

So mais uma pergunta que dizer que se eu for baixar outros skins é so fazer a mesma coisa ?
[/i][code]

Exception in thread “main” java.lang.NullPointerException
at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:133)
at javax.swing.UIDefaults.getUI(UIDefaults.java:741)
at javax.swing.UIManager.getUI(UIManager.java:1016)
at javax.swing.JPanel.updateUI(JPanel.java:109)
at javax.swing.JPanel.(JPanel.java:69)
at javax.swing.JPanel.(JPanel.java:92)
at javax.swing.JPanel.(JPanel.java:100)
at javax.swing.JRootPane.createGlassPane(JRootPane.java:527)
at javax.swing.JRootPane.(JRootPane.java:347)
at javax.swing.JFrame.createRootPane(JFrame.java:260)
at javax.swing.JFrame.frameInit(JFrame.java:241)
at javax.swing.JFrame.(JFrame.java:164)
at trabchafe_grafica.JfrmChefe.(JfrmChefe.java:47)
at trabchafe_grafica.Main.main(Main.java:36)
[/code]

Não precisa baixar pra cada um. Esse substance.jar contém vários temas.

Por isto que comentei na linha:

Pois basta dar um new diferente, por exemplo “new SubstanceMagellanLookAndFeel()”. Lembrando que teria que alterar no import.

Outros temas estão aqui descritos:

https://substance.dev.java.net/docs/skins/dark.html

Então cara mais eu faço isso eu altero no new e importo la em cima e alguns skins me retorna esses erros,aquele negocio da janela era coisa minha nada have …

Os import que estão comentados são os que me retornão aquele tipo de erro ^^^^^^


^import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.jvnet.substance.skin.SubstanceRavenLookAndFeel;//Zuadoo
import org.jvnet.substance.skin.SubstanceAutumnLookAndFeel;
import org.jvnet.substance.skin.SubstanceNebulaBrickWallLookAndFeel;
import org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel;
import org.jvnet.substance.skin.SubstanceBusinessLookAndFeel;
import org.jvnet.substance.skin.SubstanceChallengerDeepLookAndFeel;//Zuadoo
import org.jvnet.substance.skin.SubstanceCremeCoffeeLookAndFeel;//Zuadoo
import org.jvnet.substance.skin.SubstanceEmeraldDuskLookAndFeel;//Zuado
import org.jvnet.substance.skin.SubstanceMagmaLookAndFeel;//Zuado
import org.jvnet.substance.skin.SubstanceMistAquaLookAndFeel;//Zuado
import org.jvnet.substance.skin.SubstanceMistSilverLookAndFeel;//Zuado
import org.jvnet.substance.skin.SubstanceModerateLookAndFeel;//Zuado
import org.jvnet.substance.skin.SubstanceNebulaBrickWallLookAndFeel;
import org.jvnet.substance.skin.SubstanceNebulaLookAndFeel;
import org.jvnet.substance.skin.SubstanceOfficeBlue2007LookAndFeel;
import org.jvnet.substance.skin.SubstanceOfficeSilver2007LookAndFeel;
import org.jvnet.substance.skin.SubstanceRavenGraphiteGlassLookAndFeel;//Zuado
import org.jvnet.substance.skin.SubstanceSaharaLookAndFeel;


public class Main {

    public static void main(String[] args) {

        
          JFrame.setDefaultLookAndFeelDecorated(true);
         SwingUtilities.invokeLater(new Runnable() {

             public void run() {
                 try {

                     UIManager.setLookAndFeel(new SubstanceSaharaLookAndFeel());// aqui você altera os temas
                 } catch (Exception e) {
                     System.out.println("Substance Raven Graphite failed to initialize");
                 }
                 JfrmChefe chefe = new JfrmChefe();
                 chefe.setSize(600, 522);
                 chefe.setLocation(200, 200);
                chefe.setTitle("Tela Principal");
                chefe.setVisible(true);
                chefe.setResizable(false);
             }
        });

Que estranho, não sei dizer porque alguns não estão funcionando.

Desculpa mais eu me confundi,aqueles negocios de duas janelas abrir é verdade mesmo,entre os que estão pegando alguns abrem duas janelas(Quase Todos um ou dois que não abre) …
é cara tbm acho estranho mais de qualquer forma eu ja sei o caminho para isntalar um skin …
Alias vc sabe o nome de mais alguns ?
Q eu possa esar usando …

Fora o substance? Não conheço outros.

Sobre abrir mais de uma janela não sei dizer, fiz o teste aqui e funcionou normalmente.

[i]Cara perdão …AOKASSAKOAKASO EU TINHA OUTRO OBJETO NO FINAL DO MEU MAIN QUE EU NEM LEMBRAVA DELE …SOKAOKASAK
foi mal …asoksao
Nha nem esquenta cara Muito Obrigado pelo apoio e pela atençãoa o topico irei dar uma pesquisada …
Mais ai obrigado mesmo vc me ajudo muito …Isso é para um projeto semestral que eu tenho na facul

Vlw Cara ^^

[/i]

Acontece!hehehe

Beleza, precisando é só falar!

Vlw brigado pela atenção aee …soksaksa