Swing带TrayIcon(托盘小图标)的Hello world示例

首先上一个经典的Hello world示例:

 1 package com.xxx.yyy.zzz;
 2
 3 import javax.swing.JFrame;
 4
 5 public class MainFrame extends JFrame {
 6
 7     private static final long serialVersionUID = -3059928131346032935L;
 8     public MainFrame() {
 9         super();
10         this.setSize(300, 200);
11         this.getContentPane().setLayout(null);
12         this.setTitle("Hello world!");
13         /// 设置点击窗口右上角“关闭”时的行为,点击“关闭”时停止主循环,退出程序
14         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15     }
16 }
17
18 class Main {
19     public static void main(String[] args) {
20         MainFrame frm = new MainFrame();
21         frm.setVisible(true);
22     }
23 }

在eclipse下编译运行上述代码,显示如下的小窗口:

很多应用软件都会在点击“最小化”这个按钮时,将窗口缩小到任务栏的数字时钟附近的一个小区域(托盘)。java自1.6版以后,在AWT里新增了两个类:SystemTray,TrayIcon。通过这两个类,java也能使用托盘图标了。

使用TrayIcon,需要准备一个小图标。jpg、png等通用的图片格式貌似都可以用,不支持M$的ico。不知道对图片的尺寸有没有要求,本人准备的是一个32*32的png,比划了一下,托盘图标的大小貌似是16*16,有可能Java会在内部做了转换呢。

以下是添加了TrayIcon之后的代码,最小化时隐藏窗口,显示托盘图标;点击图标时,图标消失,窗口复原。不过很可惜图标在托盘中只有一片空白,即使换成16*16的图片也是这样。

 1 /// 实现接口WindowListener
 2 public class MainFrame extends JFrame implements WindowListener{
 3
 4     private static final long serialVersionUID = -3059928131346032935L;
 5     /// 32*32的png图像
 6     private static Image image = Toolkit.getDefaultToolkit().getImage("/c_cyan.png");
 7     /// TrayIcon对象
 8     private static TrayIcon trayIcon = new TrayIcon(image,"xx助手");
 9
10     public MainFrame() {
11         super();
12         this.setSize(300, 200);
13         this.getContentPane().setLayout(null);
14         this.setTitle("Hello world!");
15         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
16         /// 注册本窗口Window相关事件监听器
17         this.addWindowListener(this);
18     }
19
20     public void windowActivated(WindowEvent e) {}
21
22     public void windowClosed(WindowEvent e) {}
23
24     public void windowClosing(WindowEvent e) {}
25
26     public void windowDeactivated(WindowEvent e) {}
27
28     public void windowDeiconified(WindowEvent e) {
29     }
30
31     public void windowIconified(WindowEvent e) {
32         /// 检测操作系统是否支持系统托盘
33         if (!SystemTray.isSupported()) {
34             return;
35         }
36
37         final MainFrame parent = this;
38         final SystemTray systemTray = SystemTray.getSystemTray();
39
40         /// 设置TrayIcon自动调整图像大小,看来这么设置之后不用再关注图片尺寸了
41         trayIcon.setImageAutoSize(true);
42         /// TrayIcon添加击事件的监听器,点击后恢复主窗口,删除TrayIcon
43         trayIcon.addActionListener(new ActionListener() {
44             public void actionPerformed(ActionEvent event) {
45                 /// 显示主窗口
46                 parent.setVisible(true);
47                 /// 从系统托盘之中移除TrayIcon,因为同一个TrayIcon不能添加两次
48                 systemTray.remove(trayIcon);
49             }
50         });
51
52         try {
53             /// 往系统托盘之中添加TrayIcon
54             systemTray.add(trayIcon);
55         } catch (AWTException exception) {
56             exception.printStackTrace();
57         }
58
59         /// 隐藏本窗口
60         parent.setVisible(false);
61     }
62
63     public void windowOpened(WindowEvent e) {}
64 }
时间: 2024-08-29 07:04:48

Swing带TrayIcon(托盘小图标)的Hello world示例的相关文章

精美的HTML5/CSS3表单 带小图标

今天我们要来分享一款非常精美的HTML5/CSS3表单,准备地说,这是一款经过美化的input输入表单,每一个输入表单都可以定义其两侧的小图标,非常华丽.另外,这款表单应用还采用了3种不同的风格主题,你可以在演示页的菜单栏中选择一种样式.需要高版本的浏览器才能支持. 你也可以在这里在线演示 下面我们来简单分析一下这款表单的源代码,源代码由HTML代码.CSS代码及Javascript代码组成.一共3组样式,我们只对其中一组作解说. HTML代码: <ul data-for="prefix&

03收银中遇到电脑小图标带红色小叉的处理

收银中遇到电脑小图标带红色小叉的处理 带有红色的叉及没有本地连接电脑小图标显示的情况: 硬件层面: 1.网线没有连接检查网线是否插在收银的网口上面 2.路由器设备没有接电源检查路由器的指示灯是否有亮着 3.水晶头没有插好把水晶头挤一下,插入面板或者交换设备 4.路由器.交换机坏掉打电话,找IT更换 5.外网光纤断了看光猫是否出现亮红灯及光纤是否有光通过,如果没有,出现这样的问题马上打10000电话,安排电信过来检查与抢修 6.有线网卡坏掉一般出现这样的概率非常非常的小,可以忽略不计 这就是关于硬

基于CSS3飘带状3D菜单 菜单带小图标

这次我们要来分享一款很特别的CSS3菜单,菜单的外观是飘带状的,并且每一个菜单项有一个精美的小图标,鼠标滑过菜单项时,菜单项就会向上凸起,像是飘带飘动一样,形成非常酷的3D视觉效果.这款CSS3飘带状3D菜单非常适合作一些活动页面的菜单导航. 在线预览   源码下载 实现的代码. htmll代码: <nav> <menu> <li><a href="#"><span>t</span> <span>twi

bootstrap的小图标

bootstrapt的小图标 关于bootstrap的<i>小图标,需要几个要素.<i class="icon-search"></i>形式第一个,bootstrap.min.css第二个,就是 font-awesome.css  这个东西,它是控制小图标的.第四个!!就是!image!!没有image,就只会出现一个小框框.最重要的是fontawesome-webfont.ttf就这一个.only.这就是这两天来不死不活的成果.这几天效率低下,没有

初识SFDC创建一个google map(添加了marker小图标)

1 <apex:page > 2 <head> 3 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 4 <script type="text/javascript" src="http://maps.google.cn/maps/api/js?sensor=false"></scr

如何在网址之前添加小图标

如何在网址之前添加小图标:本章节介绍一下如何在网址前面添加一个小图标,现在知名网站都会有这个小图标,非知名网站也有很多添加这样的小图标,至于有没有好处这里不好说,至少比较美观,下面就就介绍一下如何实现此效果.方法如下:在头部中添加如下代码即可: <link rel='icon' href='antzone.ico' type='image/x-ico' /> 图标的格式必须是.ico格式,在网上有很多在线生成工具. 原文地址是:http://www.softwhy.com/forum.php?

android Editview中加小图标或者文字实现

关于这个问题,如果只是加小图标的话,已经提供了很好的支持,drawableLeft属性就可以设置左边的小图标,类推,右边也可以 不过如果你要加的是文字,我找了下,没有相应的属性,我们只能通过转换思路去实现,我的方法是用个layout去包括一个Textview和一个Editview就可以了. 1 <LinearLayout 2 android:layout_width="match_parent" 3 android:layout_height="wrap_content

fontAwesome代替网页icon小图标

引言 奥森图标(Font Awesome)提供丰富的矢量字体图标—通过CSS可以任意控制所有图标的大小 ,颜色,阴影. 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常简陋.下面的小图标,你也可能经常会看到的,如图所示: 你可能说——“我们用的都是彩色的,不是黑白的”——别着急,下面会讲到.因为它们也可以变为彩色的. 黑白的也好,彩色的也罢,如果用传统的“css + 图片”的方式来制作这些icon,我估计你至少得雇佣一个专业的设计师吧.一般的程序猿,包括前端程序猿

请用fontAwesome代替网页icon小图标

1. 引言 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常简陋.下面的小图标,你是不是会经常用到? 你可能说——“我们用的都是彩色的,不是黑白的”——别着急,下面会讲到.因为它们也可以变为彩色的. 黑白的也好,彩色的也罢,如果用传统的“css + 图片”的方式来制作这些icon,我估计你至少得雇佣一个专业的设计师吧.一般的程序猿,包括前端程序猿,估计只能去搜索了,不会自己拿ps画.例如,我之前经常去一个叫做“懒人图库”的网站去找资源,现在那个网站还存在. 但是问