java tooltips_JAVA ToolTip简单使用

TOOLTIP的使用

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中移动鼠标的时候看到提示框中的变化了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值