如何使用标签

使用JLabel类,可以显示无法选择的文本和图像。如果您需要创建一个显示字符串,图像或同时显示这两者的组件,则可以通过使用或扩展JLabel来实现。如果组件是交互式的并且具有特定状态,请使用button代替标签。

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

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

label.setOpaque(true);

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

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

Try this:

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

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

以下是来自LabelDemo.java的代码,该代码在上一个示例中创建标签。

ImageIcon icon = createImageIcon("images/middle.gif");
. . .
label1 = new JLabel("Image and Text",
                    icon,
                    JLabel.CENTER);
//Set the position of the text, relative to the icon:
label1.setVerticalTextPosition(JLabel.BOTTOM);
label1.setHorizontalTextPosition(JLabel.CENTER);

label2 = new JLabel("Text-Only Label");
label3 = new JLabel(icon);

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

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

amountLabel.setLabelFor(amountField);

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

标签 API

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

Note:

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

设置或获取标签的内容

方法或构造函数Purpose
JLabel(Icon)

JLabel(Icon, int)
JLabel(String)
JLabel(字符串,图标,整数)
JLabel(String, int)
JLabel()
创建JLabel实例,将其初始化为具有指定的文本/图像/对齐方式。 int参数指定标签内容在其绘图区域内的水平对齐方式。水平对齐方式必须是在_interface(由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()
设置或获取标签禁用时显示的图像。如果未指定禁用的图像,则外观将通过处理默认图像来创建。

微调标签的外观

MethodPurpose
void setHorizontalAlignment(int)

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

Supporting Accessibility

MethodPurpose
void setLabelFor(Component)

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

使用标签的示例

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

ExampleWhere DescribedNotes
LabelDemoThis section显示如何指定水平和垂直对齐方式以及如何对齐标签的文本和图像。
HtmlDemo在 Swing 组件中使用 HTML让您try为标签指定 HTML 文本。
BoxAlignmentDemo解决对齐问题演示在垂直框布局中使用标签时可能出现的对齐问题。展示了如何解决问题。
DialogDemo如何使用对话框使用可变标签显示说明并提供反馈。
SplitPaneDemo如何使用分割窗格如何使用清单使用滚动窗格内的标签显示图像。
SliderDemo2如何使用滑块使用JLabel为滑块提供标签。
TableDialogEditDemo如何使用表格实现标签子类ColorRenderer,以在表格单元格中显示颜色。
FormattedTextFieldDemo如何使用格式化的文本字段有四行,每行包含一个标签及其描述的格式化文本字段。
TextComponentDemoLiterals 组件功能TextComponentDemo具有扩展JLabel的内部类(CaretListenerLabel),以提供用于侦听事件的标签,并根据事件进行自我更新。
ColorChooserDemo如何使用颜色 selectors使用不透明标签在固定颜色的背景上显示当前选择的颜色。

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