2

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

我想知道是否以及如何为我的 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"));

我只是想知道有没有一种方法可以通用地设置它,如果可能的话,每个面板都会继承这些特定的大小,我真的不知道如何处理标签的大小,这就是我在这里的原因问。先感谢您。

4

3 回答 3

7

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

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

UIManager.put("Label.font", UIManager.getFont("Label.font").deriveFont(20.0));
SwingUtilities.updateComponentTreeUI(yourJFrame);
于 2012-10-17T18:48:30.660 回答
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。

于 2012-10-17T18:42:28.467 回答
1

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

class UniversalJPanel extends JPanel{
    public UniversalJPanel(){
        super();
        this.setFont(...);
        }
    }

然后你可以使用它而不是常规的 JPanel。JLabel、JTextArea 等也是如此

于 2012-10-17T18:42:36.790 回答