在Swing中自定义标签字体

时间:2009-07-27 15:31:44

标签: java swing fonts jlabel

在我的swing应用程序中,我有不同类型的文本要显示。例如,我想在选择列表之前显示标题文本,例如:

    Select choice:
     a
     b

我希望“选择选择”标签使用“标题”字体(我定义的东西),以及使用“选择”字体的选项。这种模式会在我的应用程序中出现多个位置,所以理想情况下我想集中设置字体的位置。

我目前的做法是使用工厂来创建不同的标签类型:

LabelFactory.createHeadingLabel("LabelText");
LabelFactory.createChoiceLabel("ChoiceText");

工厂读入指定字体的属性文件,并在工厂中创建标签时自定义标签。我知道使用像这样的工厂有效,但我不确定是否有一个标准的Swing约定来做这样的事情。任何意见都将不胜感激。

2 个答案:

答案 0 :(得分:2)

另一种方法是扩展JLabel

您仍然可以从配置文件中读取字体,但通过这种方式,您可以使用与常规JLabel更相似的方式创建标签。

private JLabel header = new HeaderJLabel("Header text");

您只需覆盖自定义标签的构造函数即可。

此外,您应该只读取配置文件一次。将其加载到内存中,然后从内存中访问它。

答案 1 :(得分:0)

您可以在许多Swing组件中使用有限的html,因此您可以使用html为文本提供不同的样式。

例如,headingLabel.setText("< html><b>This text will be bold</b>< /html>"); 会给你一个带有粗体文字的标签。

注意:你必须从&lt;中删除多余的空格。 HTML&GT;和&lt; / HTML&GT;