TOOLTIP的使用
来源:互联网 发布:骑士巡游算法 编辑:程序博客网 时间:2024/05/18 12:32
JToolTip是指当鼠标停留在一个控件上时显示的一个包含相关信息的方框,其中可以使用setToolTipText()方法来设置其中的内容,这里可以使用HTML语言来实现更多的效果(换行、表格、图片等),显示内容还是很多的。下面是JDK源代码:
public void setToolTipText(String text) {
String oldText = getToolTipText();
putClientProperty(TOOL_TIP_TEXT_KEY, text);
ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
if (text != null) {
if (oldText == null) {
toolTipManager.registerComponent(this);
}
} else {
toolTipManager.unregisterComponent(this);
}
}
从上面代码可以看出,这里有一个putClientProperty方法,用来设置TOOL_TIP_TEXT_KEY的属性值为text(这好像是个哈希表的样子)。oldText先从getToolTipText()方法中取,如果取到的是空的(null)并且传进来的text不为空,就注册给这个组件一个ToolTip。
这个控件是非常有用的,其中String getToolTipText(MouseEvent)是每个JComponent都实现的方法,用来获取JToolTip控件显示的内容,此方法默认JDK代码为:
public String getToolTipText() {
return (String)getClientProperty(TOOL_TIP_TEXT_KEY);
}
就是从TOOL_TIP_TEXT_KEY属性把值取出来作为返回值。在ToolTipManager的show方法中,就有这样一句:
toolTipText = insideComponent.getToolTipText();
这样就说明了如果组件重载了getToolTipText()方法,就可以在显示ToolTip的时候指定内容了。如果要在控件的不同位置显示不同的ToolTip,要重载public String getToolTipText(MouseEvent event)方法,下面是ToolTipManager类处理鼠标移动的代码:
public void mouseMoved(MouseEvent event) {
if (tipShowing) {
checkForTipChange(event);
}
else if (showImmediately) {
JComponent component = (JComponent)event.getSource();
toolTipText = component.getToolTipText(event);
if (toolTipText != null) {
preferredLocation = component.getToolTipLocation(event);
mouseEvent = event;
insideComponent = component;
exitTimer.stop();
showTipWindow();
}
}
else {
// Lazily lookup the values from within insideTimerAction
insideComponent = (JComponent)event.getSource();
mouseEvent = event;
toolTipText = null;
enterTimer.restart();
}
}
加亮显示的就是使用了重载方法的地方(还有其他一些地方,这里没全列)。
上面的逻辑可能有些混乱,主要是说几个类之间的关系(JComponent、JToolTip和ToolTipManager三个类),如果要利用SWING显示ToolTip,可以对上面的类方法进行重载或对类进行继承来达到自己所需要的效果。例如:
private class TipPanel extends JPanel
{
public TipPanel()
{
this.setSize(300, 300);
this.setBorder(new javax.swing.border.SoftBevelBorder (javax.swing.border.BevelBorder.RAISED));
}
public String getToolTipText(MouseEvent event)
{
return event.getPoint().toString();
}
}
就重载了JComponent的getToolTipText(MouseEvent)方法,这样就可以在此JPanel中移动鼠标的时候看到提示框中的变化了。
- MFC TOOLTIP的使用
- ToolTip 的使用
- silverlight ToolTip的使用
- TOOLTIP的使用
- easyui的tooltip使用
- 控件的使用---ToolTip
- easy-Ui toolTip的使用
- Win32控件-ToolTip的使用
- [EASYUI] tooltip的扩展使用
- ToolTip.js 的使用介绍
- ToolTip 使用
- Tooltip工具提示控件的使用
- 使用VC++MFC的ToolTip、CToolTipCtrl
- HelpProvider,ToolTip,ErrorProvider组件的使用
- Silverlight 控件的ToolTip封装工具使用
- JQuery EasyUI Datagrid 的 tooltip 使用
- 【Tooltip】WPF中Tooltip使用技巧总结
- 【Tooltip】WPF中Tooltip使用技巧总结
- 操作系统选择调度方式和算法的若干准则
- 需找符合条件的整数(输入整数N,输出一个最小自然数M,使N*M结果只包含1跟0)
- VMware虚拟机中如何安装VMWare-Tools详解
- Android:ellipsize
- 中南大学oj1327
- TOOLTIP的使用
- 计算t=1+1/2+1/3+...+1/n
- 解决sql server 2008评估期已到
- BNU4063:桌球游戏
- 高薪技术排行
- BNU4065:二进制串的运算(模拟)
- 算法:斐波那契兔子问题
- 23中常用的设计模式
- BNU4066:VI++ (模拟)