﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-zl860628</title><link>http://www.blogjava.net/zl860628/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 21:17:57 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 21:17:57 GMT</pubDate><ttl>60</ttl><item><title>int型数据转成byte数据时出现的问题</title><link>http://www.blogjava.net/zl860628/archive/2008/08/06/220394.html</link><dc:creator>stonebow</dc:creator><author>stonebow</author><pubDate>Wed, 06 Aug 2008 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/zl860628/archive/2008/08/06/220394.html</guid><wfw:comment>http://www.blogjava.net/zl860628/comments/220394.html</wfw:comment><comments>http://www.blogjava.net/zl860628/archive/2008/08/06/220394.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zl860628/comments/commentRss/220394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zl860628/services/trackbacks/220394.html</trackback:ping><description><![CDATA[&nbsp;<span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">由于</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的表示范围是</span><span lang="EN-US">-128</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">到</span><span lang="EN-US">127</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，如果使用下面方法转换将会发生致命的错误：</span>
<p class="MsoNormal"><span lang="EN-US">int num = 40000;</span></p>
<p class="MsoNormal"><span lang="EN-US">byte first = num/256;</span></p>
<p class="MsoNormal"><span lang="EN-US">byte second = num%256;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">这样，只要</span><span lang="EN-US">first</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">或</span><span lang="EN-US">second</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">超过</span><span lang="EN-US">127</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，就会溢出，从而合并起来的</span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">数值会和原数值不一致。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">int input2 = 130;</span></p>
<p class="MsoNormal"><span lang="EN-US">byte a3 = (byte) input2;</span></p>
<p class="MsoNormal"><span lang="EN-US">input2 = a3;</span></p>
<p class="MsoNormal"><span lang="EN-US">System.out.println(input2);</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">对于上述代码，结果为</span><span lang="EN-US">-126</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，而不是开始的</span><span lang="EN-US">130</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，也是溢出的问题，所以一定要注意。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">解决方法：</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">第一种：较为不彻底，对于正整数来说，可以除以</span><span lang="EN-US">127</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，从而使</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">不会溢出</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">第二种：转化的时候按位操作，从而不使用强制转化损失精度：</span></p>
<p class="MsoNormal"><span lang="EN-US">// </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">将</span><span lang="EN-US">iSource</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">转为长度为</span><span lang="EN-US">iArrayLen</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">数组，字节数组的低位是整型的低字节位</span></p>
<p class="MsoNormal"><span lang="EN-US">public static byte[] toByteArray(int iSource, int iArrayLen)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;</span>{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>byte[] bLocalArr = new byte[iArrayLen];</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for ( int i = 0; (i &lt; 4) &amp;&amp; (i &lt; iArrayLen); i++) </span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bLocalArr[i] = (byte)( iSource&gt;&gt;8*i &amp; 0xFF );</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return bLocalArr;</span></p>
<p class="MsoNormal"><span lang="EN-US">}<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US">// </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">将</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">数组</span><span lang="EN-US">bRefArr</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">转为一个整数</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">字节数组的低位是整型的低字节位</span></p>
<p class="MsoNormal"><span lang="EN-US">public static int toInt(byte[] bRefArr)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;</span>{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int iOutcome = 0;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>byte bLoop;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for ( int i =0; i&lt;4 ; i++) </span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bLoop = bRefArr[i];</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iOutcome+= (bLoop &amp; 0xFF) &lt;&lt; (8 * i);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return iOutcome;</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<img src ="http://www.blogjava.net/zl860628/aggbug/220394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zl860628/" target="_blank">stonebow</a> 2008-08-06 11:47 <a href="http://www.blogjava.net/zl860628/archive/2008/08/06/220394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA ToolTip简单使用</title><link>http://www.blogjava.net/zl860628/archive/2008/05/11/199806.html</link><dc:creator>stonebow</dc:creator><author>stonebow</author><pubDate>Sun, 11 May 2008 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/zl860628/archive/2008/05/11/199806.html</guid><wfw:comment>http://www.blogjava.net/zl860628/comments/199806.html</wfw:comment><comments>http://www.blogjava.net/zl860628/archive/2008/05/11/199806.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zl860628/comments/commentRss/199806.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zl860628/services/trackbacks/199806.html</trackback:ping><description><![CDATA[&nbsp;
<h3 style="text-align: center" align="center">TOOLTIP<span style="font-family: 宋体">的使用</span></h3>
<p style="text-indent: 21pt">JToolTip<span style="font-family: 宋体">是指当鼠标停留在一个控件上时显示的一个包含相关信息的方框，其中可以使用</span>setToolTipText()<span style="font-family: 宋体">方法来设置其中的内容，这里可以使用</span>HTML<span style="font-family: 宋体">语言来实现更多的效果（换行、表格、图片等），显示内容还是很多的。下面是</span>JDK<span style="font-family: 宋体">源代码：</span></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">public void setToolTipText(String text) {</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String oldText = getToolTipText();</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putClientProperty(TOOL_TIP_TEXT_KEY, text);</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ToolTipManager toolTipManager = ToolTipManager.sharedInstance();</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (text != null) {</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (oldText == null) {</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; toolTipManager.registerComponent(this);</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; toolTipManager.unregisterComponent(this);</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">从上面代码可以看出，这里有一个</span>putClientProperty<span style="font-family: 宋体">方法，用来设置</span>TOOL_TIP_TEXT_KEY<span style="font-family: 宋体">的属性值为</span>text<span style="font-family: 宋体">（这好像是个哈希表的样子）。</span>oldText<span style="font-family: 宋体">先从</span>getToolTipText()<span style="font-family: 宋体">方法中取，如果取到的是空的（</span>null<span style="font-family: 宋体">）并且传进来的</span>text<span style="font-family: 宋体">不为空，就注册给这个组件一个</span>ToolTip<span style="font-family: 宋体">。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这个控件是非常有用的，其中</span>String getToolTipText(MouseEvent)<span style="font-family: 宋体">是每个</span>JComponent<span style="font-family: 宋体">都实现的方法，用来获取</span>JToolTip<span style="font-family: 宋体">控件显示的内容，此方法默认</span>JDK<span style="font-family: 宋体">代码为：</span></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">public String getToolTipText() {</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (String)getClientProperty(TOOL_TIP_TEXT_KEY);</span></strong></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">就是从</span>TOOL_TIP_TEXT_KEY<span style="font-family: 宋体">属性把值取出来作为返回值。在</span>ToolTipManager<span style="font-family: 宋体">的</span>show<span style="font-family: 宋体">方法中，就有这样一句：</span></p>
<p style="text-indent: 21pt"><strong><span style="color: #002060">toolTipText = insideComponent.getToolTipText();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-family: 宋体">这样就说明了如果组件重载了</span>getToolTipText()<span style="font-family: 宋体">方法，就可以在显示</span>ToolTip<span style="font-family: 宋体">的时候指定内容了。如果要在控件的不同位置显示不同的</span>ToolTip<span style="font-family: 宋体">，要重载</span><strong><span style="color: #002060">public String getToolTipText(MouseEvent event)</span></strong><span style="font-family: 宋体">方法，下面是</span>ToolTipManager<span style="font-family: 宋体">类处理鼠标移动的代码：</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">public void mouseMoved(MouseEvent event) {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tipShowing) {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checkForTipChange(event);</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (showImmediately) {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JComponent component = (JComponent)event.getSource();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background: yellow">toolTipText = component.getToolTipText(event);</span></span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (toolTipText != null) {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preferredLocation = component.getToolTipLocation(event);</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouseEvent = event;</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insideComponent = component;</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exitTimer.stop();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showTipWindow();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Lazily lookup the values from within insideTimerAction</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insideComponent = (JComponent)event.getSource();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouseEvent = event;</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; toolTipText = null;</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enterTimer.restart();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;}</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">加亮显示的就是使用了重载方法的地方（还有其他一些地方，这里没全列）。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">上面的逻辑可能有些混乱，主要是说几个类之间的关系（</span>JComponent<span style="font-family: 宋体">、</span>JToolTip<span style="font-family: 宋体">和</span>ToolTipManager<span style="font-family: 宋体">三个类），如果要利用</span>SWING<span style="font-family: 宋体">显示</span>ToolTip<span style="font-family: 宋体">，可以对上面的类方法进行重载或对类进行继承来达到自己所需要的效果。例如：</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">private class TipPanel extends JPanel</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp; {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public TipPanel()</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setSize(300, 300);</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setBorder(new javax.swing.border.SoftBevelBorder (javax.swing.border.BevelBorder.RAISED));</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getToolTipText(MouseEvent event)</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return event.getPoint().toString();</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><strong><span style="color: #002060">&nbsp;&nbsp;&nbsp; }</span></strong></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-family: 宋体">就重载了</span>JComponent<span style="font-family: 宋体">的</span>getToolTipText(MouseEvent)<span style="font-family: 宋体">方法，这样就可以在此</span>JPanel<span style="font-family: 宋体">中移动鼠标的时候看到提示框中的变化了。</span></p><img src ="http://www.blogjava.net/zl860628/aggbug/199806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zl860628/" target="_blank">stonebow</a> 2008-05-11 11:14 <a href="http://www.blogjava.net/zl860628/archive/2008/05/11/199806.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>