设置Java程序的系统托盘图标,用到SystemTray类和TrayIcon类。

1.预备知识



JavaAPI对于SystemTray类描述:

SystemTray类代表桌面的系统托盘。 在Microsoft Windows上,它被称为“任务栏状态区”,在Gnome上将其称为“通知区域”,在KDE上称为“系统托盘”。 系统托盘由桌面上运行的所有应用程序共享。 在某些平台上,系统托盘可能不存在或可能不受支持,在这种情况下, getSystemTray()抛出UnsupportedOperationException 。 要检测系统托盘是否受支持,请使用isSupported() 。

SystemTray可能包含一个或多个TrayIcons ,它们使用add(java.awt.TrayIcon)方法添加到托盘中,并使用remove(java.awt.TrayIcon)删除不再需要的托盘 。 TrayIcon由图像,弹出菜单和一组关联的侦听器组成。

2.使系统托盘显示图标

public class TrayIconDemo2 {
public static void main(String args[]) throws Exception {
TrayIcon ti = new TrayIcon(new ImageIcon("xtb.jpg").getImage()) ;
SystemTray.getSystemTray().add(ti);
}
}

运行结果:



任务栏状态区多了这个图标,而设置的图像应为:



原因查看文档



代码改为

public class TrayIconDemo2 {
public static void main(String args[]) throws Exception {
TrayIcon ti = new TrayIcon(new ImageIcon("xtb.jpg").getImage()) ;
ti.setImageAutoSize(true);
SystemTray.getSystemTray().add(ti);
}
}

运行结果:



(没有设置事件响应,可在任务管理器关闭图标)

3.添加提示

public class TrayIconDemo2 {
public static void main(String args[]) throws Exception {
TrayIcon ti = new TrayIcon(new ImageIcon("xtb.jpg").getImage()) ;
ti.setImageAutoSize(true);
ti.setToolTip("这是提示");//设置提示
SystemTray.getSystemTray().add(ti);
}
}

运行结果:



(也可在构造方法中添加提示)

4.添加弹出菜单

public class TrayIconDemo2 {
public static void main(String args[]) throws Exception {
TrayIcon ti = new TrayIcon(new ImageIcon("xtb.jpg").getImage()) ;
ti.setImageAutoSize(true); PopupMenu pm = new PopupMenu() ;
MenuItem mi2 = new MenuItem("打开");
MenuItem mi = new MenuItem("退出") ;
pm.add(mi);
pm.add(mi2);
ti.setPopupMenu(pm); SystemTray.getSystemTray().add(ti);
}
}

运行结果:

JavaSE 初学系统托盘图标SystemTray类的更多相关文章

  1. C# 系统托盘图标

    C# 系统托盘图标 WPF NotifyIcon 资料 网址: http://www.codeproject.com/Articles/36468/WPF-NotifyIcon http://www. ...

  2. runtime-给系统已有类添加属性

    在没有接触runtime之前,我们接触到的能给类进行扩展的方法有类目(category)和延展(extension)两种.类目(category)可以给系统已有类添加扩展方法但是不能添加属性,并且被添 ...

  3. [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值

    系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController &l ...

  4. 探索Win32系统之窗口类(转载)

    Window Classes in Win32 摘要 本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化. 在本文中,"类", ...

  5. Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5

    原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题. ...

  6. C#动态系统托盘图标

    C#动态系统托盘图标 利用timer组件定时执行变化. using System; using System.Windows.Forms; namespace DynamicStockIcon { p ...

  7. Atitit 软件项目系统托盘图标解决方案

    Atitit 软件项目系统托盘图标解决方案 1.1. Nodejs   node-webkit还实现了本地化的API,例如菜单栏,系统的托盘图标支持1 1.2. Java c# qt c++1 1.3 ...

  8. Windows系统开发常用类-------------Environment类

    Windows系统开发常用类-------------Environment类:         SystemDirectory//显示系统目录         MachineName//计算机名称 ...

  9. Qt 添加程序图标和系统托盘图标

    添加程序图标 第一种方法: 1.创建程序的时候,选择添加默认图标 2.替换程序目录下的ico文件,编译生成即可. 第二种方法: 比较适合一开始没有添加程序图标的情况 1.项目右键-->添加--& ...

随机推荐

  1. ThreadLocal 原理及一些实现

    ThreadLocal = TL 网上讲TL原理很多,我大概说下自己的理解 TL其实是不是有点像全局的配置中心,static ConcurrentHashMap<Thread,value> ...

  2. java基础语法(标识符 修饰符 关键字)

    标识符 用来表示类名,变量名,方法名,类型名,数组名,文件名的有效字符序列称为标识符.   1)只有字母(区分大小写),下划线,美元符号和数字组成,长度不受限制.注:字母包括英文26个字母 ,汉字,日 ...

  3. SQLserver登陆报错

    https://blog.csdn.net/captain618/article/details/52331372 今天也不知道sql server抽了什么风,无论是windows登录还是sa登录,登 ...

  4. vmvare使用桥接和NAT方式连接网络

    一.背景:本着学以致用的心态,试着最小化安装Centos7.4.安装centos主要目的有两个:共享文件(samba).安装postgresql数据库 本打算使用内网(不联网)的方式安装samba和p ...

  5. Vue 自定义指令实现权限控制(按钮级)

    在用户登陆后,根据用户id读取用户的所有权限数据,放入本地的sessionStorage进行存储(这里我是拿到权限按钮按钮的标识,英文名称.把他们合成一个字符串存储在 btnPowerString 中 ...

  6. 基于Keepalived的MySQL高可用

    keepalived负责的是故障转移,至于故障转以后的节点之间数据的一致性问题依赖于具体的复制模式.不管是主从.一主多从还是双主.集群节点个数.主从具体的模式无关(常规复制,半同步复制,GTID复制, ...

  7. 读取文件不是真实的具体路径 setZh.ini

    读取 c:\windows\Syswow64\XX\XX.ini 时内容不正确. 发现真实文件为: C:\Users\用户名\AppData\Local\VirtualStore\Windows\Sy ...

  8. Java8自定义函数式编程接口和便捷的引用类的构造器及方法

    什么是函数编程接口? 约束:抽象方法有且只有一个,即不能有多个抽象方法,在接口中覆写Object类中的public方法(如equal),不算是函数式接口的方法. 被@FunctionalInterfa ...

  9. yii2 模板twig中使用GridView::widget

    yii框架twig模板中使用GridView::widget 需要这样写: {{ grid_view_widget({ 'dataProvider': provider, 'columns': [ ' ...

  10. poj2182(线段树求序列第k小)

    题目链接:https://vjudge.net/problem/POJ-2182 题意:有n头牛,从1..n编号,乱序排成一列,给出第2..n个牛其前面有多少比它编号小的个数,记为a[i],求该序列的 ...