# 如何使用工具提示

> 原文： [https://docs.oracle.com/javase/tutorial/uiswing/components/tooltip.html](https://docs.oracle.com/javase/tutorial/uiswing/components/tooltip.html)

为任何`JComponent`对象创建工具提示很容易。使用`setToolTipText`方法设置组件的工具提示。例如，要向三个按钮添加工具提示，只需添加三行代码：

```
b1.setToolTipText("Click this button to disable the middle button.");
b2.setToolTipText("This middle button does not react when you click it.");
b3.setToolTipText("Click this button to enable the middle button.");

```

当程序用户暂停光标在任何程序按钮上时，按钮的工具提示出现。您可以通过运行`ButtonDemo`示例来看到这一点，[如何使用按钮，复选框和单选按钮](button.html)中对此进行了说明。下面是光标在`ButtonDemo`示例中的左按钮上暂停时出现的工具提示图片。

<center>![ButtonDemo showing a tool tip.](img/4854949b22d62641a604a55954910d16.jpg)</center>

对于具有多个部件的选项卡式窗格等组件，更改工具提示文本以反映光标下组件的一部分通常是有意义的。例如，选项卡式窗格可能会使用此功能来说明单击光标下的选项卡时会发生什么。实现选项卡式窗格时，可以在传递给`addTab`或`setToolTipTextAt`方法的参数中指定特定于选项卡的工具提示文本。

即使在没有用于设置特定于零件的工具提示文本的 API 的组件中，您通常也可以自己完成工作。如果组件支持渲染器，则可以在自定义渲染器上设置工具提示文本。 [表](table.html)和[树](tree.html)部分提供由自定义渲染器确定的工具提示文本的示例。适用于所有`JComponent`的替代方法是创建组件的子类并覆盖其`getToolTipText(MouseEvent)`方法。

设置工具提示所需的大多数 API 都属于`JComponent`类，因此大多数 Swing 组件都会继承它们。更多工具提示 API 可以在各个类中找到，例如`JTabbedPane`。通常，这些 API 足以指定和显示工具提示;你通常不需要直接处理实现类 [`JToolTip`](https://docs.oracle.com/javase/8/docs/api/javax/swing/JToolTip.html) 和 [`ToolTipManager`](https://docs.oracle.com/javase/8/docs/api/javax/swing/ToolTipManager.html) 。

下表列出了`JComponent`类中的工具提示 API。有关各个组件对工具提示的支持的信息，请参阅相关组件的操作方法部分。

<caption></caption>
| 方法 | 目的 |
| --- | --- |
| [setToolTipText（String）](https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#setToolTipText-java.lang.String-) | 如果指定的字符串不为 null，则此方法将组件注册为具有工具提示，并在显示时为工具提示指定文本。如果参数为 null，则此方法将关闭此组件的工具提示。 |
| [String getToolTipText（）](https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#getToolTipText--) | 返回先前使用`setToolTipText`指定的字符串。 |
| [String getToolTipText（MouseEvent）](https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#getToolTipText-java.awt.event.MouseEvent-) | 默认情况下，返回`getToolTipText()`返回的相同值。多部件组件（如 [`JTabbedPane`](tabbedpane.html) ， [`JTable`](table.html) 和 [`JTree`](tree.html) ）会覆盖此方法以返回与鼠标事件位置关联的字符串。例如，选项卡式窗格中的每个选项卡可以具有不同的工具提示文本。 |
| [Point getToolTipLocation（MouseEvent）](https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#getToolTipLocation-java.awt.event.MouseEvent-) | 返回组件工具提示的左上角出现的位置（在接收组件的坐标系中）。参数是导致显示工具提示的事件。默认返回值为 null，它告诉 Swing 系统选择一个位置。 |

此表列出了一些使用工具提示的示例，并指出了描述这些示例的位置。

| 例 | 在哪里描述 | 笔记 |
| :-- | :-- | :-- |
| [`ButtonDemo`](../examples/components/index.html#ButtonDemo) | 本节和[如何使用按钮，复选框和单选按钮](button.html) | 使用工具提示提供按钮说明。 |
| [`IconDemo`](../examples/components/index.html#IconDemo) | [如何使用图标](../components/icon.html) | 使用标签中的工具提示来提供图像的名称和大小信息。 |
| [`TabbedPaneDemo`](../examples/components/index.html#TabbedPaneDemo) | [如何使用选项卡式窗格](tabbedpane.html) | 使用`addTab`方法的参数中指定的特定于选项卡的工具提示文本。 |
| [`TableRenderDemo`](../examples/components/index.html#TableRenderDemo) | [指定细胞工具提示](table.html#celltooltip) | 使用渲染器向表中添加工具提示。 |
| [`TableToolTipsDemo`](../examples/components/index.html#TableToolTipsDemo) | [指定单元格的工具提示](table.html#celltooltip)，[指定列标题的工具提示](table.html#headertooltip) | 使用各种技术将工具提示添加到表中。 |
| [`TreeIconDemo2`](../examples/components/index.html#TreeIconDemo2) | [自定义树的显示](tree.html#display) | 使用自定义渲染器向树添加工具提示。 |
| [`ActionDemo`](../examples/misc/index.html#ActionDemo) | [如何使用行动](../misc/action.html) | 将工具提示添加到使用`Action`创建的按钮。 |