Olá pessoal… sempre que eu desenvolvo aplicações gráficas, e preciso alterar a fonte do mesmo, eu vou em cada componente e altero usando o setFont();
Não tem alguma maneira de fazer com que todos os componentes fiquem com a fonte desejada sem q ter alterar um por um??
Abraços…
Bem, segundo o javadoc…
[quote]public void setFont(Font f)
Sets the font of this component.
Parameters:
f - the font to become this component's font; if this parameter is null then this component will inherit the font of its parent[/quote]
Ou seja, use o setFont() no container, como o JPanel ou mesmo o JFrame em que os componentes estão, e um setFont(null) pra todo o resto.
Daria pra fazer um método pra fazer isso pra você, mas tecnicamente ainda seria alterar a fonte um por um né… e aí ao invés de setar null daria na mesma colocar a fonte que você quer.
Abraços tchau
Se você está usando o “Metal Theme” pode criar um tema, derivado do Metal, com os fontes-padrão alterados. Leia a documentação de javax.swing.plaf.metal.DefaultMetalTheme. Por exemplo:
import java.awt.Font;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.FontUIResource;
import javax.swing.plaf.metal.DefaultMetalTheme;
public class MeuMetalTheme extends DefaultMetalTheme {
private final Font defaultFont;
private final FontUIResource userTextFont;
public MeuMetalTheme () {
defaultFont = new Font ("Lucida Sans", Font.PLAIN, 12);
userTextFont = new FontUIResource (defaultFont);
}
public FontUIResource getUserTextFont() {
return userTextFont;
}
}
...
MetalTheme theme = new MeuMetalTheme();
MetalLookAndFeel laf = new MetalLookAndFeel();
laf.setCurrentTheme (theme);
UIManager.setLookAndFeel(laf);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});