Java 教程是针对 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,可能使用不再可用的技术。
有关 Java SE 9 及后续版本中更新的语言功能的摘要,请参阅 Java 语言更改。
有关所有 JDK 发行版的新功能、增强功能和已删除或弃用选项的信息,请参阅 JDK 发行说明。
使用 JLabel
类,您可以显示不可选择的文本和图像。如果您需要创建一个显示字符串、图像或二者的组件,可以使用或扩展 JLabel
。如果组件是交互式的并且有特定的状态,请使用按钮而不是标签。
通过在标签的文本中指定 HTML 代码,您可以为标签提供多行、多字体或多颜色等不同的特性。如果标签仅使用单一颜色或字体,则可以使用 setForeground
或 setFont
方法来避免 HTML 处理的开销。有关详细信息,请参阅 在 Swing 组件中使用 HTML。
请注意,默认情况下,标签不是不透明的。如果您需要绘制标签的背景,建议将其不透明属性设置为 "true"。以下代码片段显示了如何做到这一点。
label.setOpaque(true);
下图介绍了一个应用程序,显示了三个标签。窗口被分成三个等高的行;每行的标签尽可能宽。
下面是前面示例中创建标签的 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
)的信息。有关辅助技术的更多信息,请参阅 如何支持辅助技术。
以下表格列出了常用的 JLabel
构造方法和方法。您可能会调用的其他方法由 Component
和 JComponent
类定义。它们包括 setFont
、setForeground
、setBorder
、setOpaque
和 setBackground
。有关详细信息,请参阅 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 标记控件。