如何更改java应用程序中显示的所有组件的字体?
我尝试使用UIManager
UIManager.put("TextField.font", new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 11));
UIManager.put("Label.font", new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 11));
UIManager.put("ComboBox.font", new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 11))
奇怪的是,这改变了文本字段的字体,但不适用于JLabel或JComboBoxes
然后我尝试通过循环遍历UIManager知道的所有键来设置字体:
public static void setUIFont(FontUIResource f) {
Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
FontUIResource fontUIResource = new FontUIResource(font);
UIManager.put(key, fontUIResource);
UIManager.getDefaults().put(key, fontUIResource);
UIManager.getLookAndFeel().getDefaults().put(key, fontUIResource);
}
}
}
此代码根本不起作用。
我必须说我使用Synthetica作为LookAndFeel ...所以我不知道这是如何通过UIManager干扰我的manuell设置的。
答案 0 :(得分:0)
我认为您可以从this answer更新Roman,如下所示:
public static void setUIFont (java.awt.Font f){
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get (key);
if (value != null && value instanceof java.awt.Font)
UIManager.put (key, f);
}
}
然后将其与您的Font
一起使用:
setUIFont (new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 11));
答案 1 :(得分:0)
您可以创建自己的组件,如:
public class MyJButton extends JButton {
public MyJButton(){
setFont(FontClass.getBasicFont());
}
}
public class MyJTextArea extends JTextArea {
public MyJTextArea (){
setFont(FontClass.getBasicFont());
}
}
.
.
.
然后创建这个包含所有字体属性的类,如:
public class FontClass(){
private static final String BASIC_FONT_FACE = "Arial";
private static final String BASIC_FONT_SIZE = 12;
public static Font getBasicFont(){
return new Font(BASIC_FONT_FACE, Font.PLAIN, BASIC_FONT_SIZE);
}
}
我认为这是原始的方式,但如果你想保存它可能会很好 数据库中的这些值