资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
核心核心 SwingSwing 组件组件( (二二) )核心 Swing 组件(二)核心 Swing 组件(二)4.2 JToolTip 类 Swing 组件支持当光标停留在其上时显示简短的弹出信息的功能。用来显示弹出信息的类就是JToolTip。4.2.1 创建 JToolTip 调用 JComponent 的 public void setToolTipText(String text)方法可以使得当鼠标停留在一个安装了弹出信息的组件上时自动创建 JToolTip 实例。我们通常并不直接调用 JToolTip 构造函数。只有一个构造器,而他是无参数的变体。工具提示的文本通常只是一行的长度。然而,如果文本字符串以开头(在许多情况下如此) ,那么文本的内容可以任意的 HTML 3.2 格式化文本。例如,下面的代码使得弹出信息如图 4-3 所示:component.setToolTipText(“TooltipMessage“);4.2.2 创建自定义的 JToolTip 对象正如在本章稍后的自定义 JToolTip 观感一节中所讨论的,我们可以通过为JToolTip 设置 UIResource 元素很容易的自定义所有的弹出信息的显示特点。JComponent 类定义了一种简单的方法可以使得我们自定义当光标停留在某一个特定的组件上时工具提示的显示特点。我们只需要简单的继承我们要自定义的组件类并重写继承的 public JToolTip createToolTip()方法。当 ToolTipManager 决定需要显示弹出信息的时候会调用 createToolTip()方法。要自定义弹出工具提示的外观,只需要重写这个方法并自定义由继承的方法所返回的 JToolTip。例如,下面的代码显示了 JButton 工具提示的颜色的自定义,如图 4-4 所示。JButton b = new JButton(“Hello, World“) public JToolTip createToolTip() JToolTip tip = super.createToolTip(); tip.setBackground(Color.YELLOW); tip.setForeground(Color.RED); return tip; ;在创建了 JToolTip 之后,我们可以配置继承的 JComponent 属性或是任何特定的 JToolTip 属性,如表 4-5 所示。JToolTip 属性属性名 数据类型 访问性accessibleContext AccessibleContext 只读component JComponent 读写tipText String 读写UI ToolTipUI 只读UIClassID String 只读4.2.3 显示位置工具提示文本 Swing 组件甚至支持基于鼠标位置的不同工具提示文本的显示。这需要重写 public boolean contains(int x, int y)方法,这是由 Component 类继承的。例如,在实现了前一节自定义的 JButton 的创建之后,工具提示文本可以依据鼠标点是否位距离组件左边 50 像素之内而显示不同的文本。JButton button = new JButton(“Hello, World“) public JToolTip createToolTip() JToolTip tip = super.createToolTip(); tip.setBackground(Color.YELLOW); tip.setForeground(Color.RED); return tip; public boolean contains(int x, int y) if (x 50) setToolTipText(“Got Green Eggs?“); else setToolTipText(“Got Ham?“); return super.contains(x, y); ;4.2.4 自定义义 JToolTip 观感每一个已安装的 Swing 观感都会提供一个不同的 JToolTip 外观以及一个默认的 UIResource 值设置集合。图 4-5 显示了预安装的观感类型的 JToolTip 组件:Motif, Widnows 与 Ocean。用于 JToolTip 的 UIResource 相关的属性显示在表 4-6 中。对于JToolTip 组件,有 9 个不同的属性。JToolTip UIResource 元素属性字符串 对象类型ToolTip.background ColorToolTip.backgroundInactive ColorToolTip.border BorderToolTip.borderInactive ColorToolTip.font FontToolTip.foreground ColorToolTip.foregroundInactive ColorToolTip.hideAccelerator BooleanToolTipUI String正如在本章的前面所注意到的,JToolTip 类支持 HTML 内容的显示。这可以实现多列与多行输入的显示。4.2.5 ToolTipManager 类尽管由于 JComponent 创建并创建并显示其自己的 JToolTip,JToolTip 在某种程度上是一个被动对象,其使用也有许多可以配置的方面。然而,这些配置是由管理工具提示的类来负责的,而不是由 JToolTip 本身负责。管理工具提示使用的类被称之为 ToolTipManager 类。由于使用了单例设计模式,ToolTipManager 类并不存在构造函数。相反,我们可以通过ToolTipManager 的静态 sharedInstance()方法获得当前的管理器。4.2.6 ToolTipManager 属性一旦我们获得了 ToolTipManager 的共享实例,我们就可以定制工具提示文本何时以及是否显示。如表 4-7 所示,有五个可配置的属性。ToolTipManager 属性属性名 数据类型 访问性dimissDelay int 读写enabled boolean 读写initialDelay int 读写lightWeightPopupEnabled boolean 读写reshowDelay int 只读初始时,工具提示是允许的,我们可通过ToolTipManager.shareInstance().setEnabled(false)方法来禁止。这使得我们可以将工具提示与组件相关联,并允许终端在需要允许或禁止工具提示。有三个面向时间的属性:initialDelay, dimissDelay 与reshowDelay。他们均以毫秒计数。initialDelay 属性是合适的工具提示出现之前用户必须将鼠标停留在组件内部的毫秒数。dismissDelay 指定当鼠标停止运动时文本显示的时间长度;如果用户移动鼠标,也会使得文本消失。reshowDelay 决定用户重新进入组件并且使得弹出文本显示时在组件外部必须停留的时间。lightWeightPopupEnabled 属性用来决定存储工具提示文本的弹出窗口类型。如果这个属性为 true,则弹出文本适应顶级窗口的边界之内,文本出现在一个 Swing JPanel 内部。如果这个属性为false,则弹出文本适应顶级窗口的边界之内,文本出现在一个 AWT Panel 之内。如果文本的部分内容不能出现在顶级窗口之内,无论属性设置为何值,弹出文本将会出现在 Window 内。尽管不是 ToolTipManager 的属性,ToolTipManager 的两个方法值得一提:public void registerComponent(JComponent component)public void unregisterComponent(JComponent component)当我们调用JComponent 的 setToolTipText()方法时,这会使得组件将其自身注册到 ToolTipManager。然而,有时我们需要直接注册一个组件。当组件部分的显示是由其他渲染器完成时必须如此。例如,对于JTree 而言,TreeCellRenderer 显示树的所有节点。当渲染器显示工具提示时,我们注册 JTree 并通知渲染器显示什么文本。JTree tree = new JTree(.);ToolTipManager.sharedInstance().registerComponent(tree);TreeCellRenderer renderer = new ATreeCellRenderer(.);tree.setCellRenderer(renderer);.public class ATreeCellRenderer implements TreeCellRenderer . public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) . renderer.setToolTipText(“Some Tip“); return renderer;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号