Boa tarde,
Gostaria de melhorar meus programas no SWING com relação a ACESSIBILIDADE e opções que tragam mais conforte e facilidade de uso aos usuários.
Gostaria de, ao clique de um botão, aumentar a fonte de todos os componentes de todas as janelas do meu aplicativo. Fiz um JDialog para configurar o tamanho e a idéia é que as alterações se apliquem a todas as janelas.
Como posso fazer isso?
Tentei configurar a fonte de todos os componentes, atribuindo como objeto Font um objeto Font static. No entanto, ao alterar a instância desses objetos static para um novo tamanho de fonte, a alteração não se reflete nas janelas:
//importações e outros dados omitidos
public class Sistema {
//Estas são as fontes que estou usando em todos os componentes. Ex: JLabel.setFont(Sistema.FONTE_NORMAL);
public static Font FONTE_NORMAL = new Font ( "Verdana", Font.PLAIN, 12 );
public static Font FONTE_DESTAQUE = new Font ( "Verdana", Font.BOLD, 12 );
/**
* Método que altera o tamanho das fontes usadas em todo o sistema
* @param novoTamanho O novo tamanho que as fontes devem assumir
*/
public static void resizeFonts( float novoTamanho )
{
FONTE_NORMAL = FONTE_NORMAL.deriveFont(novoTamanho);
FONTE_DESTAQUE = FONTE_DESTAQUE.deriveFont(novoTamanho);
}
} //fim da classe
Como posso implementar minha idéia?
OBS : Eu sei que posso criar métodos public em todos os formulários JFrame que são acionados para substituir a fonte de todos os componentes. Gostaria de evitar esse meio, porquê tenho que ficar pegando todos os componentes de cada JPanel e os que estiverem dentro destes… e tenho que discernir qual o tipo deste e que fonte será usada para representá-lo (fonte comd estaque ou sem)…e por aí vaí. Gostaria de uma forma mais simples e ágil, que surtisse efeito em todas as janelas, mesmo que manipulasse o L&F.
No entanto, se não tiver outro jeito, eu faço conforme a observação acima…