LookAndFeel

2 respostas
josimarsis

Seguinte galera fiz uma Classe e um menu pra alterar o LookAndFeel da minha aplicação. Classe é seguinte:

package Visao;

import javax.swing.JFrame;

/**
 *
 * @author SUPORTE
 */
public class LookAndFeel {

    private javax.swing.UIManager.LookAndFeelInfo looks[];
    private final int Metal = 0;
    private final int Motif = 1;
    private final int SO = 2;
    private final int Windows = 3; 
    private final String Substance = "org.jvnet.substance.skin.SubstanceOfficeSilver2007LookAndFeel";
    
    public LookAndFeel() {
    }

    public void setLookAndFeelPadrao(int index, JFrame frame) {
        looks = javax.swing.UIManager.getInstalledLookAndFeels();
        try {
            javax.swing.UIManager.setLookAndFeel(looks[index].getClassName());
            javax.swing.SwingUtilities.updateComponentTreeUI(frame);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void setLookAndFeelSubstance(String parametro, JFrame frame) {
        looks = javax.swing.UIManager.getInstalledLookAndFeels();
        try {
            javax.swing.UIManager.setLookAndFeel(parametro);
            javax.swing.SwingUtilities.updateComponentTreeUI(frame);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public int getMotif() {
        return Motif;
    }

    public int getWindows() {
        return Windows;
    }

    public int getMetal() {
        return Metal;
    }
    
    public int getSo() {
        return SO;
    }
    
    public String getSubstance() {
        return Substance;
    }

O probelma é o seguinte não consegui encontar uma maneira de atualizar todas as telas quando aciono o evento de botão que muda o LookAndFeel utilizo para as telas JFrame e JDialogs. creio que tenho atualizar os componetes da tela toda vez que chama-las. mas tbm não consegui !

2 Respostas

P

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/SwingUtilities.html#updateComponentTreeUI(java.awt.Component)

josimarsis

Pois eh kra ja ate vi esse metodo ! Mas tem um porém em todas as minhas telas eu tenho um metodo como esse :

public static FrmEmpresa empresa = null;

    public static FrmEmpresa getInstanceFrmEmpresa() {
        if (empresa == null) {
            empresa = new FrmEmpresa();
            
        }
        return empresa;

    }
para garantir uma unica instancia das minhas telas ! e eu não consegui utilizar o metodo.
javax.swing.SwingUtilities.updateComponentTreeUI();
pois ele não é static ! Alguma dica ?
Criado 5 de setembro de 2008
Ultima resposta 5 de set. de 2008
Respostas 2
Participantes 2