如何在 Swing 组件中使用 HTML

许多 Swing 组件在其 GUI 中显示文本字符串。默认情况下,组件的文本以一种字体和颜色显示,并且全部显示在一行上。您可以分别通过调用组件的setFontsetForeground方法来确定组件文本的字体和颜色。例如,以下代码创建一个标签,然后设置其字体和颜色:

label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setForeground(new Color(0xffffdd));

如果要在文本中混合字体或颜色,或者要设置格式(例如多行),则可以使用 HTML。 HTML 格式可以在所有 Swing 按钮,菜单项,标签,工具提示和选项卡式窗格以及使用标签来呈现文本的树和表等组件中使用。

要指定组件的文本具有 HTML 格式,只需将<html>标记放在文本的开头,然后在其余部分使用任何有效的 HTML。这是在按钮文本中使用 HTML 的示例:

button = new JButton("<html><b><u>T</u>wo</b><br>lines</html>");

这是结果按钮。

在 Metal 外观中显示 HTML 的按钮的屏幕截图。

示例:HtmlDemo

名为HtmlDemo的应用程序使您可以通过在标签上设置文本来使用 HTML 格式。您可以在HtmlDemo.java中找到该程序的完整代码。这是HtmlDemo示例的图片。

Metal 外观中的 HtmlDemo 的屏幕截图。

Try This:

  • 单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行 HtmlDemo。另外,要自己编译和运行示例,请查阅example index

  • 在左侧的文本区域中编辑 HTML 格式,然后单击“更改标签”按钮。右侧的标签显示结果。

  • 从左侧的文本区域中删除\ 标记。标签的文本不再解析为 HTML。

示例 2:ButtonHtmlDemo

让我们看看另一个使用 HTML 的示例。 ButtonHtmlDemo将字体,颜色和其他文本格式添加到三个按钮。您可以在ButtonHtmlDemo.java中找到该程序的完整代码。这是ButtonHtmlDemo示例的图片。

Metal 外观中的 ButtonHtmlDemo 的屏幕截图。

单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行 ButtonHtmlDemo。另外,要自己编译和运行示例,请查阅example index

左右按钮具有多行和文本样式,并使用 HTML 来实现。另一方面,中间按钮仅使用一行,字体和颜色,因此不需要 HTML。这是指定这三个按钮的文本格式的代码:

b1 = new JButton("<html><center><b><u>D</u>isable</b><br>"
                 + "<font color=#ffffdd>middle button</font>",
                 leftButtonIcon);
Font font = b1.getFont().deriveFont(Font.PLAIN);
b1.setFont(font);
...
b2 = new JButton("middle button", middleButtonIcon);
b2.setFont(font);
b2.setForeground(new Color(0xffffdd));
...
b3 = new JButton("<html><center><b><u>E</u>nable</b><br>"
                 + "<font color=#ffffdd>middle button</font>",
                 rightButtonIcon);
b3.setFont(font);

请注意,我们必须使用<u>标记来使助记符“ D”和“ E”在使用 HTML 的按钮中加下划线。还请注意,当禁用按钮时,不幸的是,其 HTML 文本将保持黑色,而不是变为灰色。 (请参阅bug #4783068,以查看这种情况是否发生了变化。)

本节讨论了如何在普通的非文本组件中使用 HTML。有关主要 Object 是格式化文本的组件的信息,请参见使用 Literals 组件

如果您使用 JavaFX 编程,请参见HTML Editor