为我的所有Jlabels JTextArea等设置通用字体大小

时间:2012-10-17 18:32:45

标签: java swing fonts jpanel font-size

你好我有一个奇怪的问题。

我想知道是否以及如何为我的Jlabels,TextAreas和基本上可以在面板上发布的任何文本进行通用设置。我一直在每个标签上写字体大小以使其保持一致。然而,面板正在增长,我不想在每个标签上硬编码字体大小。

以下是我正在使用并希望在所有标签和textarea上使用的尺寸。

titlelb.getFont().deriveFont( Font.BOLD, (float) 20.); 
lb1.getFont().deriveFont( Font.PLAIN, (float) 11.);
lb2.getFont().deriveFont( Font.BOLD, (float) 11.);
textArea.setFont( Font.decode( "Arial-PLAIN-11"));

我只是想知道有没有办法将它设置为普遍的,每个Panel都会继承这些特定尺寸,如果可能的话,我真的不知道如何去做标签的尺寸这就是为什么我在这里问。提前谢谢。

3 个答案:

答案 0 :(得分:7)

您可以通过调用UIManager.put("nameOfFontProperty", new Font(Font.DIALOG, FONT.PLAIN, sizeInPixel));为所需的每个组件更改UIManager中的字体属性。您可以找到包含默认属性here的列表。

使所有标签的字体大小为20px的一个示例:

UIManager.put("Label.font", UIManager.getFont("Label.font").deriveFont(20.0));
SwingUtilities.updateComponentTreeUI(yourJFrame);

答案 1 :(得分:4)

为要在面板中具有固定字体的任何JComponent子类编写自定义包装类,并在构造函数中添加字体代码。例如:

public class JLabelCustom extends JLabel {

    public JLabelCustom(...) {
        super();

        // Font setting code here
        .getFont().deriveFont( Font.BOLD, (float) 20.); 
        .getFont().deriveFont( Font.PLAIN, (float) 11.);
        .getFont().deriveFont( Font.BOLD, (float) 11.);
        this.setFont( Font.decode( "Arial-PLAIN-11"));
    }
}

使用自定义JComponent,无论您希望使用标准化字体。

答案 2 :(得分:1)

您可以创建一个自动设置所有内容的子类。像'

这样的东西
class UniversalJPanel extends JPanel{
    public UniversalJPanel(){
        super();
        this.setFont(...);
        }
    }

然后你可以使用它而不是常规的JPanel。 JLabel,JTextArea等同样适用