文档

Java™ 教程
隐藏目录
如何使用标签
教程: 使用 Swing 创建 GUI
课程: 使用 Swing 组件
章节: 如何使用各种组件

如何使用标签

使用 JLabel 类,您可以显示不可选择的文本和图像。如果您需要创建一个显示字符串、图像或二者的组件,可以使用或扩展 JLabel。如果组件是交互式的并且有特定的状态,请使用按钮而不是标签。

通过在标签的文本中指定 HTML 代码,您可以为标签提供多行、多字体或多颜色等不同的特性。如果标签仅使用单一颜色或字体,则可以使用 setForegroundsetFont 方法来避免 HTML 处理的开销。有关详细信息,请参阅 在 Swing 组件中使用 HTML

请注意,默认情况下,标签不是不透明的。如果您需要绘制标签的背景,建议将其不透明属性设置为 "true"。以下代码片段显示了如何做到这一点。

label.setOpaque(true);

下图介绍了一个应用程序,显示了三个标签。窗口被分成三个等高的行;每行的标签尽可能宽。

LabelDemo 的快照,其中使用了带有文本和图标的标签。

试一试: 
  1. 单击“启动”按钮以使用 Java™ Web Start 运行 Label Demo(下载 JDK 7 或更高版本)。或者,要自行编译和运行示例,请参阅 示例索引启动 LabelDemo 应用程序
  2. 调整窗口大小,以便您可以看到标签内容在标签的绘制区域内的放置方式。
    所有标签内容的默认垂直对齐方式是居中对齐 — 也就是说,标签内容在标签的绘制区域内垂直居中。顶部标签包含图像和文本,具有水平居中对齐方式。第二个标签只包含文本,具有左对齐(前导对齐),这是从左到右语言中仅包含文本的标签的默认对齐方式。第三个标签只包含图像,具有水平居中对齐方式,这是仅包含图像的标签的默认对齐方式。

下面是前面示例中创建标签的 LabelDemo.java 的代码。

ImageIcon icon = createImageIcon("images/middle.gif");
. . .
label1 = new JLabel("图像和文本",
                    icon,
                    JLabel.CENTER);
//设置文本相对于图标的位置:
label1.setVerticalTextPosition(JLabel.BOTTOM);
label1.setHorizontalTextPosition(JLabel.CENTER);

label2 = new JLabel("仅文本标签");
label3 = new JLabel(icon);

createImageIcon 方法的代码与本教程中的其他代码相似。您可以在 如何使用图标 中找到它。

通常,标签描述了另一个组件。在这种情况下,可以通过使用 setLabelFor 方法来提高程序的可访问性,以标识标签所描述的组件。例如:

amountLabel.setLabelFor(amountField);

上面的代码来自 FormattedTextFieldDemo 示例,该示例在 如何使用格式化文本字段 中进行了讨论,它让辅助技术知道标签(amountLabel)提供有关格式化文本字段(amountField)的信息。有关辅助技术的更多信息,请参阅 如何支持辅助技术

标签 API

以下表格列出了常用的 JLabel 构造方法和方法。您可能会调用的其他方法由 ComponentJComponent 类定义。它们包括 setFontsetForegroundsetBordersetOpaquesetBackground。有关详细信息,请参阅 JComponent 类。使用标签的 API 可分为三类:


注意: 

在下面的 API 中,请不要将标签对齐性与 X 和 Y 对齐性混淆。布局管理器使用 X 和 Y 对齐性,可以影响任何组件(不仅仅是标签)的大小或位置。另一方面,标签对齐性对标签的大小或位置没有影响。标签对齐性只是确定标签内容在标签的绘制区域内的位置。通常,标签的绘制区域恰好足够在标签上绘制,因此标签对齐性是无关紧要的。有关 X 和 Y 对齐性的更多信息,请参阅 如何使用 BoxLayout


设置或获取标签的内容
方法或构造函数 目的
JLabel(Icon)
JLabel(Icon, int)
JLabel(String)
JLabel(String, Icon, int)
JLabel(String, int)
JLabel()
创建一个 JLabel 实例,将其初始化为具有指定的文本/图像/对齐方式。int 参数指定标签内容在其绘制区域内的水平对齐方式。水平对齐方式必须是 SwingConstants 接口(JLabel 实现的接口)中定义的以下常量之一:LEFT、CENTER、RIGHT、LEADING 或 TRAILING。为了方便本地化,我们强烈推荐使用 LEADING 和 TRAILING,而不是 LEFT 和 RIGHT。
void setText(String)
String getText()
设置或获取标签显示的文本。可以使用 HTML 标记来格式化文本,如 在 Swing 组件中使用 HTML 中所述。
void setIcon(Icon)
Icon getIcon()
设置或获取标签显示的图像。
void setDisplayedMnemonic(char)
char getDisplayedMnemonic()
设置或获取看起来像键盘替代项的字母。当标签描述了一个组件(例如文本字段),该组件具有键盘替代项但无法显示时,这很有帮助。如果还设置了 labelFor 属性(使用 setLabelFor),则当用户激活助记符时,键盘焦点将转移到 labelFor 属性指定的组件。
void setDisplayedMnemonicIndex(int)
int getDisplayedMnemonicIndex()
设置或获取一个提示,指示文本中的哪个字符应修饰以表示助记符。当您具有两个相同字符的实例并希望修饰第二个实例时,这很有用。例如,setDisplayedMnemonicIndex(5) 修饰处于位置 5 的字符(也就是文本中的第 6 个字符)。并非所有类型的外观和感觉都支持此功能。
void setDisabledIcon(Icon)
Icon getDisabledIcon()
设置或获取标签禁用时显示的图像。如果不指定禁用的图像,外观和感觉将通过操作默认图像创建一个禁用的图像。
微调标签外观的方法
方法 目的
void setHorizontalAlignment(int)
void setVerticalAlignment(int)
int getHorizontalAlignment()
int getVerticalAlignment()
设置或获取标签内容应放置在标签的哪个区域。对于水平对齐方式,SwingConstants 接口定义了五个可能的值:LEFT、CENTER(仅图像标签的默认值)、RIGHT、LEADING(仅文本标签的默认值)和 TRAILING。对于垂直对齐方式,有 TOP、CENTER(默认值)和 BOTTOM。
void setHorizontalTextPosition(int)
void setVerticalTextPosition(int)
int getHorizontalTextPosition()
int getVerticalTextPosition()
设置或获取标签的文本相对于标签的图像放置位置。对于水平位置,SwingConstants 接口定义了五个可能的值:LEADING、LEFT、CENTER、RIGHT 和 TRAILING(默认值)。对于垂直位置:TOP、CENTER(默认值)和 BOTTOM。
void setIconTextGap(int)
int getIconTextGap()
设置或获取标签的文本与图像之间的像素数。
支持可访问性的方法
方法 目的
void setLabelFor(Component)
Component getLabelFor()
设置或获取标签描述的组件。

使用标签的示例

以下表格列出了一些使用标签的示例。

示例 所在位置 说明
LabelDemo 本章节 演示了如何指定水平和垂直对齐方式,以及如何对齐标签的文本和图像。
HtmlDemo 在 Swing 组件中使用 HTML 允许您尝试为标签指定 HTML 文本。
BoxAlignmentDemo 修复对齐问题 演示了在垂直盒式布局中使用标签时可能出现的对齐问题,并展示了如何解决这个问题。
DialogDemo 如何使用对话框 使用可更改的标签来显示说明并提供反馈。
SplitPaneDemo 如何使用拆分窗格如何使用列表 在滚动窗格内使用标签显示图像。
SliderDemo2 如何使用滑块 使用 JLabel 为滑块提供标签。
TableDialogEditDemo 如何使用表格 实现了一个标签子类 ColorRenderer,在表格单元格中显示颜色。
FormattedTextFieldDemo 如何使用格式化文本字段 有四行,每行包含一个标签和它描述的格式化文本字段。
TextComponentDemo 文本组件特性 TextComponentDemo 具有一个内部类 CaretListenerLabel,它扩展了 JLabel,提供了一个监听事件的标签,根据事件更新自身。
ColorChooserDemo 如何使用颜色选择器 使用不透明的标签在固定颜色的背景上显示当前选择的颜色。

请参阅 使用 JavaFX UI 控件:标签 教程,了解 JavaFX 标记控件。


上一页: 如何使用内部框架
下一页: 如何使用分层窗格