Aplicação não assimila look and feel

7 respostas
pyro

Tenho o seguinte método para definir meu look and feel:

public void setLookAndFeel(){
        try {   
         UIManager.setLookAndFeel(   
                    UIManager.getSystemLookAndFeelClassName());   
        } catch (UnsupportedLookAndFeelException ex) {   
            JOptionPane.showMessageDialog(null,
                        "Tema de aplicação selecionado não é suportado.\n" + ex,
                        "Erro!",
                        JOptionPane.ERROR_MESSAGE);   
        } catch (InstantiationException ex) {   
            JOptionPane.showMessageDialog(null,
                        "Erro ao instanciar classe de tema.\n" + ex,
                        "Erro!",
                        JOptionPane.ERROR_MESSAGE);  
        } catch (IllegalAccessException ex) {   
            JOptionPane.showMessageDialog(null,
                        "Acesso não autorizado na classe de tema.\n" + ex,
                        "Erro!",
                        JOptionPane.ERROR_MESSAGE);   
        } catch (ClassNotFoundException ex) {   
            JOptionPane.showMessageDialog(null,
                        "Classe do tema não localizada.\n" + ex,
                        "Erro!",
                        JOptionPane.ERROR_MESSAGE); 
        }   
        SwingUtilities.updateComponentTreeUI(this);
    }

Em minha aplicação tenho 4 telas diferentes, 3 delas assimilam o look and feel corretamente, a tela principal (Main) não assimila e conserva o padrão do Java. Alguém tem alguma dica?

7 Respostas

guilhermetonetto

o metodo que vc seta o look and feel , esta no main? ou vc chama ele no main?

[]'s

pyro

eu chamo ele no main.

guilhermetonetto

e a tela main nao chama uma progressBar?? ou ele starta em um frame normal?

pyro

chama um jFrame normal, sem progressbar.

guilhermetonetto

ja testo chama o metodo que vc seta o look and feel antes de dar o show() ?

ou chamar o metodo no metodo main …

pq dae vc vai ta chamando duas vezes esse metodo

testa ae

[]'s

W

sua classe principal, tem um extends JFrame ? ou tu so instanciou ele como um membro da classe?
se extender, num vai mudar o look and feel, mesmo tu dando um update pelo swingutilities…nem sei pq mas sei que nao vai dar, faz tempo q nao tento
ai invez de estender, so faz declarar e configurar como um membro normal…a não ser que por algum motivo tu faça algum teste tipo iS-a JFrame com a classe…
se não estender jframe esquece o que eu falei =p

pyro

Olha que interessante, ainda não sei a teoria, mas se eu fazer isso no meu main:

nucleo.setLookAndFeel(); //Aqui eu chamo o método
SwingUtilities.updateComponentTreeUI(this); //disparo esse mesmo trecho do código que já estava no meu método.

Agora está funcionando, e esse trecho está sendo disparado de dentro do meu método e para ficar ainda mais legal, se eu chamar o método (sem o trecho de baixo) em outras telas da aplicação funciona.

P.S.: extendo JFrame em todas as telas minhas.

Criado 2 de janeiro de 2008
Ultima resposta 3 de jan. de 2008
Respostas 7
Participantes 3