如何使用标签
使用JLabel类,可以显示无法选择的文本和图像。如果您需要创建一个显示字符串,图像或同时显示这两者的组件,则可以通过使用或扩展JLabel
来实现。如果组件是交互式的并且具有特定状态,请使用button代替标签。
通过在标签文本中指定 HTML 代码,可以为标签赋予各种 Feature,例如多行,多种字体或多种颜色。如果标签仅使用单一颜色或字体,则可以使用setForeground
或setFont
方法来避免 HTML 处理的开销。有关详情,请参见在 Swing 组件中使用 HTML。
请注意,默认情况下标签不是不透明的。如果需要绘制标签的背景,建议将其不透明度属性设置为“ true”。以下代码片段显示了如何执行此操作。
label.setOpaque(true);
下图介绍了一个显示三个标签的应用程序。窗户分为三等高的行。每行中的标签应尽可能宽。
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
构造函数和方法。您可能会调用的其他方法由Component
和JComponent
类定义。它们包括setFont
,setForeground
,setBorder
,setOpaque
和setBackground
。有关详情,请参见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 实现)中定义的以下常量之一: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() | 设置或获取标签禁用时显示的图像。如果未指定禁用的图像,则外观将通过处理默认图像来创建。 |
Method | Purpose |
---|---|
void setHorizontalAlignment(int) | |
void setVerticalAlignment(int) int getHorizontalAlignment() int getVerticalAlignment() | 设置或获取标签上应放置其内容的区域。 SwingConstantsinterface为水平对齐定义了五个可能的值:LEFT ,CENTER (仅用于图像标签的默认值),RIGHT ,LEADING (仅用于文本标签的默认值),TRAILING 。对于垂直对齐:TOP ,CENTER (默认值)和BOTTOM 。 |
void setHorizontalTextPosition(int) void setVerticalTextPosition(int) int getHorizontalTextPosition() int getVerticalTextPosition() | 设置或获取标签文本相对于标签图像的放置位置。 SwingConstantsinterface为水平位置定义了五个可能的值:LEADING ,LEFT ,CENTER ,RIGHT 和TRAILING (默认值)。对于垂直位置:TOP ,CENTER (默认值)和BOTTOM 。 |
void setIconTextGap(int) int getIconTextGap() | 设置或获取标签文本与其图像之间的像素数。 |
Method | Purpose |
---|---|
void setLabelFor(Component) | |
Component getLabelFor() | 设置或获取标签描述的组件。 |
使用标签的示例
下表列出了许多使用标签的示例。
Example | Where Described | Notes |
---|---|---|
LabelDemo | This section | 显示如何指定水平和垂直对齐方式以及如何对齐标签的文本和图像。 |
HtmlDemo | 在 Swing 组件中使用 HTML | 让您try为标签指定 HTML 文本。 |
BoxAlignmentDemo | 解决对齐问题 | 演示在垂直框布局中使用标签时可能出现的对齐问题。展示了如何解决问题。 |
DialogDemo | 如何使用对话框 | 使用可变标签显示说明并提供反馈。 |
SplitPaneDemo | 如何使用分割窗格和如何使用清单 | 使用滚动窗格内的标签显示图像。 |
SliderDemo2 | 如何使用滑块 | 使用JLabel 为滑块提供标签。 |
TableDialogEditDemo | 如何使用表格 | 实现标签子类ColorRenderer ,以在表格单元格中显示颜色。 |
FormattedTextFieldDemo | 如何使用格式化的文本字段 | 有四行,每行包含一个标签及其描述的格式化文本字段。 |
TextComponentDemo | Literals 组件功能 | TextComponentDemo 具有扩展JLabel 的内部类(CaretListenerLabel ),以提供用于侦听事件的标签,并根据事件进行自我更新。 |
ColorChooserDemo | 如何使用颜色 selectors | 使用不透明标签在固定颜色的背景上显示当前选择的颜色。 |
请参阅使用 JavaFX UI 控件:标签教程,以了解带有 JavaFX 标签的控件。