如何使用标签
原文: https://docs.oracle.com/javase/tutorial/uiswing/components/label.html
使用 JLabel
类,可以显示不可选择的文本和图像。如果需要创建显示字符串,图像或两者的组件,可以使用或扩展JLabel
。如果组件是交互式且具有特定状态,请使用按钮而不是标签。
通过在标签的文本中指定 HTML 代码,您可以为标签指定各种特征,例如多行,多种字体或多种颜色。如果标签仅使用单一颜色或字体,则可以使用setForeground
或setFont
方法来避免 HTML 处理的开销。有关详细信息,请参阅在 Swing 组件中使用 HTML。
请注意,默认情况下标签不是不透明的。如果需要绘制标签的背景,建议您将其不透明度属性设置为“true”。以下代码段显示了如何执行此操作。
label.setOpaque(true);
下图介绍了一个显示三个标签的应用程序。窗口分为三排相等的高度;每行中的标签尽可能宽。
Try this:
单击“启动”按钮以使用 Java™Web Start (下载 JDK 7 或更高版本)运行 Label Demo。或者,要自己编译并运行示例,请参考示例索引。
调整窗口大小,以便您可以看到标签的内容如何放置在标签的绘图区域内。 所有标签内容都有默认的垂直对齐方式 - 也就是说,标签内容在标签的绘图区域中垂直居中。顶部标签包含图像和文本,具有水平中心对齐。第二个标签(仅包含文本)已经离开(前导)对齐,这是从左到右语言的纯文本标签的默认设置。第三个标签仅包含图像,具有水平中心对齐,这是仅图像标签的默认设置。
以下是 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
) 。有关辅助技术的更多信息,请参阅如何支持辅助技术。
下表列出了常用的JLabel
构造器和方法。您可能调用的其他方法由Component
和JComponent
类定义。它们包括setFont
,setForeground
,setBorder
,setOpaque
和setBackground
。有关详细信息,请参见 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
实现)中定义的以下常量之一: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) |
组件 getLabelFor() | 设置或获取标签描述的组件。 |
下表列出了许多使用标签的示例。
例 | 在哪里描述 | 笔记 |
---|---|---|
LabelDemo |
这个部分 | 显示如何指定水平和垂直对齐以及如何对齐标签的文本和图像。 |
HtmlDemo |
在 Swing 组件中使用 HTML | 让您体验为标签指定 HTML 文本。 |
BoxAlignmentDemo |
修复对齐问题 | 在垂直框布局中使用标签时,可能会出现对齐问题。显示如何解决问题。 |
DialogDemo |
如何使用对话框 | 使用可更改的标签显示说明并提供反馈。 |
SplitPaneDemo |
如何使用拆分窗格和如何使用列表 | 使用滚动窗格内的标签显示图像。 |
SliderDemo2 |
如何使用滑块 | 使用JLabel 为滑块提供标签。 |
TableDialogEditDemo |
如何使用表格 | 实现标签子类ColorRenderer ,以显示表格单元格中的颜色。 |
FormattedTextFieldDemo |
如何使用格式化文本字段 | 有四行,每行包含一个标签和它描述的格式化文本字段。 |
TextComponentDemo |
文本组件功能 | TextComponentDemo 有一个内部类(CaretListenerLabel ),它扩展JLabel 以提供一个标签来监听事件,并根据事件自行更新。 |
ColorChooserDemo |
如何使用颜色选择器 | 使用不透明标签在固定颜色背景下显示当前选择的颜色。 |
请参阅使用 JavaFX UI 控件:标签教程以了解 JavaFX 标签控件。