﻿<?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-为我所爱，奋斗一生-随笔分类-java swing</title><link>http://www.blogjava.net/yuweixia2008/category/39524.html</link><description>java的点滴</description><language>zh-cn</language><lastBuildDate>Tue, 07 Jul 2009 19:39:24 GMT</lastBuildDate><pubDate>Tue, 07 Jul 2009 19:39:24 GMT</pubDate><ttl>60</ttl><item><title>java访问系统托盘</title><link>http://www.blogjava.net/yuweixia2008/archive/2009/07/07/285869.html</link><dc:creator>希</dc:creator><author>希</author><pubDate>Tue, 07 Jul 2009 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/yuweixia2008/archive/2009/07/07/285869.html</guid><wfw:comment>http://www.blogjava.net/yuweixia2008/comments/285869.html</wfw:comment><comments>http://www.blogjava.net/yuweixia2008/archive/2009/07/07/285869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yuweixia2008/comments/commentRss/285869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yuweixia2008/services/trackbacks/285869.html</trackback:ping><description><![CDATA[类java.awt.SystemTray代表了桌面的系统托盘.你可以通过静态方法SystemTray.getSystemTray()来进行访问.但是,在这之前,你的程序应该用静态方法SystemTray.isSupported()来测试一下系统是否支持托盘.如果系统托盘不存在或者系统不支持托盘,isSupported()将返回flase.在这种情况下调用getSysemTray的话,它将抛出java.lang.UnsupportedOperationException.<br />
每个java应用程序都只有一个单一的SystemTray实例.所以,一个程序不能创建只属于它自己的SystemTray实例;而它必须用getSystemTray()方法来取得已有的那个.<br />
SystemTray包含有一个或多个TrayIcon.通过SystemTray的方法add(java.awt.TrayIcon)方法可以添加一个TrayIcon到托盘,通过remove(java.awt.TrayIcon)将一个TrayIcon从托盘移除.注意最近添加的测试代码指明,如操作系统或者Java runtime不添加TrayIcon到托盘,add()方法可能会抛出AWTException.例如,在X-Windows中,如果托盘不存在,它将抛出AWTException<br />
下面的代码演示了如果访问系统托盘:
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;TrayIcon&nbsp;trayIcon;<br />
<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(SystemTray.isSupported())&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemTray&nbsp;tray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SystemTray.getSystemTray();<br />
&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;image&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Toolkit.getDefaultToolkit().getImage(</span><span style="color: #000000">"</span><span style="color: #000000">tray.gif</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;MouseListener&nbsp;mouseListener&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MouseListener()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseClicked(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;clicked!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseEntered(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;entered!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseExited(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;exited!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mousePressed(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;pressed!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseReleased(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;released!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ActionListener&nbsp;exitListener&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionListener()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;actionPerformed(ActionEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Exiting...</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PopupMenu&nbsp;popup&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PopupMenu();<br />
&nbsp;&nbsp;&nbsp;&nbsp;MenuItem&nbsp;defaultItem&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MenuItem(</span><span style="color: #000000">"</span><span style="color: #000000">Exit</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;defaultItem.addActionListener(exitListener);<br />
&nbsp;&nbsp;&nbsp;&nbsp;popup.add(defaultItem);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;trayIcon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TrayIcon(image,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Demo</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;popup);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ActionListener&nbsp;actionListener&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionListener()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;actionPerformed(ActionEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.displayMessage(</span><span style="color: #000000">"</span><span style="color: #000000">Action&nbsp;Event</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">An&nbsp;Action&nbsp;Event&nbsp;Has&nbsp;Been&nbsp;Peformed!</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrayIcon.MessageType.INFO);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.setImageAutoSize(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.addActionListener(actionListener);<br />
&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.addMouseListener(mouseListener);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tray.add(trayIcon);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(AWTException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">TrayIcon&nbsp;could&nbsp;not&nbsp;be&nbsp;added.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;不支持系统托盘</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
}<br />
</span></div>
</div>
<div><font size="1"><strong>实现Tray Icon</strong></font><br />
系统托盘允许一个或多个java.awt.TrayIcon添加到它或从它移除:一个TrayIcon对象代表着一个可以添加到系统托盘的托盘图标.但是,TrayIcon的功能不止是一个显示在托盘里的图标.它还可以有工具提示(tooltip),有一个AWT的弹出菜单,还有一系列相关的侦听器<br />
&nbsp;一个TrayIcon会产生各种各样的MouseEvent(pressed,released,和clicked).可以对它添加相关的侦听器去接收这些事件的通知.但是要注意,在MouseEvent从TrayIcon接收到的坐标是相对于屏幕而不是TrayIcon它自己的.TrayIcon它自己处理这些事件.例如,默认情况下,当右击TrayIcon时,和它相关的弹出菜单就会显示.当鼠标在它上面停留时,工具提示就会出现.TrayIcon也可以产生ActionEvent.在一些平台上,ActionEvent产生于用户通过鼠标或键盘选择该TrayIcon时.一个实现良好的TrayIcon应该用不同的方法去显示弹出菜单和选择托盘图标.<br />
注意,根据最新的javadocs,当一个鼠标事件被发送到它的侦听器时,它的component属性(通过父类ComponentEvent.getComponent()获取)将会被设置为null.而source属性(通过EventObject.getSource()获取)将被设置为该TrayIcon<br />
有用的特点<br />
用setImage()方法可以在以后更新TrayIcon的图标:<br />
&nbsp;&nbsp;&nbsp;&nbsp; trayIcon.setImage(updatedImage);<br />
同样你可以更新工具提示:<br />
&nbsp;&nbsp;&nbsp;&nbsp; trayIcon.setTooltip("I'm busy. Go away.");<br />
TrayIcon有一个非常有用的自动调整大小的属性.这个属性决定是否自动调整图片的大小以适应托盘的大小.默认这个属性是false的.如果图片的大小不适合托盘的大小,图片仍会以它原来的大小绘制到托盘上.也就是说,如果图片比分配的托盘空间大,图片将被剪切.另一方面,如果自动调整大小被设为true,那么图片将伸缩以适应托盘图标的大小<br />
&nbsp;&nbsp;&nbsp;&nbsp; trayIcon.setImageAutoSize(true);<br />
最后,如果你想偶尔用工具提示通知用户程序的一些变化,你可以用displayMessage()方法.这个方法弹出一个在托盘图标上弹出一个消息.这个消息会在一段时间之后,或者用户单击它之后消失.单击它的时候,根据系统的情况,会产生ActionEvent <br />
&nbsp;&nbsp;&nbsp;&nbsp; trayIcon.displayMessage("Finished downloading", <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Your Java application has finished downloading",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TrayIcon.MessageType.INFO);<br />
第一个参数是标题.它通常在弹出消息里会以粗体显示.第二个参数是要显示的消息.最后,最后一个参数是TrayIcon的一个枚举类型TrayIcon.Message,有四个选择.这些选项可以用作决定在显示消息时,是否应执行某些图形操作或其他系统动作.四个选择如下:<br />
TrayIcon.MessageType.ERROR&nbsp;&nbsp; An error message <br />
TrayIcon.MessageType.INFO&nbsp;&nbsp; An information message <br />
TrayIcon.MessageType.NONE&nbsp;&nbsp; A simple message <br />
TrayIcon.MessageType.WARNING&nbsp;&nbsp; A warning message <br />
===================================================<br />
下面是我自己写的例子</div>
<div>&nbsp;</div>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;blog.swing;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.ActionListener;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.ActionEvent;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.MouseListener;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.MouseEvent;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.PopupMenu;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.MenuItem;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Image;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.AWTException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Toolkit;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.SystemTray;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.TrayIcon;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.SimpleDateFormat;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Calendar;<br />
<br />
</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SystemTrayDemo&nbsp;<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemTray&nbsp;systemTray;<br />
&nbsp;&nbsp;&nbsp;&nbsp;TrayIcon&nbsp;trayIcon;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;trayImage;<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;trayTip;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PopupMenu&nbsp;trayPopupMenu;<br />
&nbsp;&nbsp;&nbsp;&nbsp;MenuItem&nbsp;trayMenuItem;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ActionListener&nbsp;trayActionListener;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ActionListener&nbsp;menuActionListener;<br />
&nbsp;&nbsp;&nbsp;&nbsp;MouseListener&nbsp;trayMouseListener;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;displayTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SystemTrayDemo()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;SystemTray.isSupported()&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayMouseListener&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MouseListener()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseClicked(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;clicked!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseEntered(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;entered!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseExited(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;exited!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mousePressed(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;pressed!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseReleased(MouseEvent&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Mouse&nbsp;released!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayActionListener&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionListener(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;actionPerformed(&nbsp;ActionEvent&nbsp;e&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Tray&nbsp;Icon&nbsp;-&nbsp;Action&nbsp;event&nbsp;happened!</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menuActionListener&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionListener(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;actionPerformed(&nbsp;ActionEvent&nbsp;e&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayPopupMenu&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PopupMenu();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayMenuItem&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MenuItem(</span><span style="color: #000000">"</span><span style="color: #000000">exit</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayMenuItem.addActionListener(&nbsp;menuActionListener&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayPopupMenu.add(&nbsp;trayMenuItem&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayTip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;a&nbsp;SystemTray&nbsp;Demo</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayImage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Toolkit.getDefaultToolkit().getImage(</span><span style="color: #000000">"</span><span style="color: #000000">images/leaf.gif</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayIcon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TrayIcon(&nbsp;trayImage,trayTip,trayPopupMenu&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.addActionListener(&nbsp;trayActionListener&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.addMouseListener(&nbsp;trayMouseListener&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.setImageAutoSize(&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systemTray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SystemTray.getSystemTray();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systemTray.add(&nbsp;trayIcon&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">catch</span><span style="color: #000000">(&nbsp;AWTException&nbsp;e&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">SystemTray&nbsp;unsupported!</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Thread(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Runnable(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;now;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleDateFormat&nbsp;sdf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd&nbsp;hh:mm:ss</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;time;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #0000ff">true</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sdf.format(&nbsp;now.getTime()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trayIcon.displayMessage(</span><span style="color: #000000">"</span><span style="color: #000000">报时</span><span style="color: #000000">"</span><span style="color: #000000">,time,TrayIcon.MessageType.INFO);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #000000">60000</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">catch</span><span style="color: #000000">(&nbsp;InterruptedException&nbsp;e&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayTime.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SystemTrayDemo();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
</div>
<img src ="http://www.blogjava.net/yuweixia2008/aggbug/285869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yuweixia2008/" target="_blank">希</a> 2009-07-07 22:01 <a href="http://www.blogjava.net/yuweixia2008/archive/2009/07/07/285869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻量级组键和重量级组件</title><link>http://www.blogjava.net/yuweixia2008/archive/2009/06/02/279624.html</link><dc:creator>希</dc:creator><author>希</author><pubDate>Tue, 02 Jun 2009 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/yuweixia2008/archive/2009/06/02/279624.html</guid><wfw:comment>http://www.blogjava.net/yuweixia2008/comments/279624.html</wfw:comment><comments>http://www.blogjava.net/yuweixia2008/archive/2009/06/02/279624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yuweixia2008/comments/commentRss/279624.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yuweixia2008/services/trackbacks/279624.html</trackback:ping><description><![CDATA[重量级组件:运行平台必须存在一个对应的组件. <br />
轻量级组件:在一个虚拟的画布上画出来的组件(所以swing较慢),所有轻量级组件 "最终 "要放到重量级组件(jframe,jdialog)中.由于是画出来所以能做到各种平台上一致的表现.同样,如果混合重量级组件和轻量级组件容易引起重叠上的冲突. &nbsp; <br />
<br />
JDK &nbsp; 1.2 &nbsp; 之后，Java &nbsp; 有了另一组 &nbsp; GUI &nbsp; 的 &nbsp; API，叫做 &nbsp; Swing。因为 &nbsp; Swing &nbsp; 是 &nbsp; lightweight &nbsp; 的 &nbsp; API，所以无所不能，不但有各式各样先进的组件，而且连组件风格都可抽换。Swing &nbsp; 出现之后，大家很快地就不太使用 &nbsp; AWT &nbsp; 了。 <br />
不要以为 &nbsp; Swing &nbsp; 是用来取代 &nbsp; AWT &nbsp; 的，其实 &nbsp; Swing &nbsp; 是架构在 &nbsp; AWT &nbsp; 之上做出来的（Swing &nbsp; 有四个 &nbsp; heavyweight &nbsp; 组件），没有 &nbsp; AWT，也就不会有 &nbsp; Swing。Swing &nbsp; 的出现只是减少程序员直接使用 &nbsp; AWT &nbsp; 的机会，而不会让 &nbsp; AWT &nbsp; 消失。 &nbsp; <br />
<br />
在swing中有5个heavyweight组件: &nbsp; JFrame, &nbsp; JDialog, &nbsp; JApplet, &nbsp; JInternalFrame, &nbsp; and &nbsp; JWindow &nbsp; ,其它的组件全部是源自JComponent类和lightweight的组件，尽可能的不要使用awt组件。
<img src ="http://www.blogjava.net/yuweixia2008/aggbug/279624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yuweixia2008/" target="_blank">希</a> 2009-06-02 15:46 <a href="http://www.blogjava.net/yuweixia2008/archive/2009/06/02/279624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>