如何使用标签

原文: https://docs.oracle.com/javase/tutorial/uiswing/components/label.html

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

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

请注意,默认情况下标签不是不透明的。如果需要绘制标签的背景,建议您将其不透明度属性设置为“true”。以下代码段显示了如何执行此操作。

  1. label.setOpaque(true);

下图介绍了一个显示三个标签的应用程序。窗口分为三排相等的高度;每行中的标签尽可能宽。

A snapshot of LabelDemo, which uses labels with text and icons.


Try this:

  1. 单击“启动”按钮以使用 Java™Web Start下载 JDK 7 或更高版本)运行 Label Demo。或者,要自己编译并运行示例,请参考示例索引Launches the LabelDemo Application

  2. 调整窗口大小,以便您可以看到标签的内容如何放置在标签的绘图区域内。 所有标签内容都有默认的垂直对齐方式 - 也就是说,标签内容在标签的绘图区域中垂直居中。顶部标签包含图像和文本,具有水平中心对齐。第二个标签(仅包含文本)已经离开(前导)对齐,这是从左到右语言的纯文本标签的默认设置。第三个标签仅包含图像,具有水平中心对齐,这是仅图像标签的默认设置。


以下是 LabelDemo.java 中的代码,它在前一个示例中创建了标签。

  1. ImageIcon icon = createImageIcon("images/middle.gif");
  2. . . .
  3. label1 = new JLabel("Image and Text",
  4. icon,
  5. JLabel.CENTER);
  6. //Set the position of the text, relative to the icon:
  7. label1.setVerticalTextPosition(JLabel.BOTTOM);
  8. label1.setHorizontalTextPosition(JLabel.CENTER);
  9. label2 = new JLabel("Text-Only Label");
  10. label3 = new JLabel(icon);

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

通常,标签描述另一个组件。发生这种情况时,您可以使用setLabelFor方法识别标签描述的组件,从而提高程序的可访问性。例如:

  1. amountLabel.setLabelFor(amountField);

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

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


Note:

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


方法或构造器 目的
JLabel(Icon)

JLabel(Icon,int) JLabel(String) JLabel(String,Icon, int) JLabel(String,int) JLabel() | 创建JLabel实例,将其初始化为具有指定的 text / image / alignment。 int参数指定标签内容在其绘图区域内的水平对齐方式。水平对齐必须是 SwingConstants 接口(JLabel实现)中定义的以下常量之一:LEFTCENTERRIGHTLEADINGTRAILING。为了便于本地化,我们强烈建议使用LEADINGTRAILING,而不是LEFTRIGHT。 | | 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 setHorizo​​ntalAlignment(int)

void setVerticalAlignment(int) int getHorizo​​ntalAlignment() int getVerticalAlignment() | 设置或获取标签上应放置其内容的区域。 SwingConstants 接口为水平对齐定义了五个可能的值:LEFTCENTER(仅图像标签的默认值),RIGHTLEADING(仅限文本的默认值)标签),TRAILING。对于垂直对齐:TOPCENTER(默认值)和BOTTOM。 | | void setHorizo​​ntalTextPosition(int) void setVerticalTextPosition(int) int getHorizo​​ntalTextPosition() int getVerticalTextPosition() | 设置或获取标签文本相对于标签图像的放置位置。 SwingConstants 接口定义了水平位置的五个可能值:LEADINGLEFTCENTERRIGHTTRAILING(默认值)。对于垂直位置:TOPCENTER(默认值)和BOTTOM。 | | void setIconTextGap(int) int getIconTextGap() | 设置或获取标签文本与其图像之间的像素数。 |

方法 目的
void setLabelFor(Component)

组件 getLabelFor() | 设置或获取标签描述的组件。 |

下表列出了许多使用标签的示例。

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

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