博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java应用程序使用系统托盘资源
阅读量:6613 次
发布时间:2019-06-24

本文共 3626 字,大约阅读时间需要 12 分钟。

要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可:

1、线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯
2、获得一个SystemTray,注意我们是通过getSystemTray方法来获取,而不是直接创建一个系统托盘。
3、为我们的托盘创建图标,那么我们不难想到要使用到Image和TrayIcon两个知识点了。先创建一个Image对象实例,然后作为参数添加到TrayIcon的构造方法上,这会用到trayIcon=new TrayIcon(image,“ToolTip String”,popup);方法,其中的popup 是作为弹出菜单,也就是邮件菜单出现的。
4,通过tray来把我们的trayIcon的实例里添加到系统托盘上。这样就大功告成了,是不会感觉很简单啊 。
下面请看代码吧:

public static void main(String []args){        new TimerAndProgressBar();        if(SystemTray.isSupported()){            SystemTray tray=SystemTray.getSystemTray();            Image image=Toolkit.getDefaultToolkit().getImage("E://Important/图片/1171179");            PopupMenu popup=new PopupMenu();            MenuItem item=new MenuItem("弹出菜单");            popup.add(item);            TrayIcon icon=new TrayIcon(image,"系统托盘信息",popup);            try{                tray.add(icon);            }catch(Exception e){                e.printStackTrace();            }        }else{            System.out.println("您无法使用系统托盘,抱歉!");        }    }

还在等什么,快点为你的软件在系统托盘上开辟一个家吧。


下面是别人家的代码,我觉得挺好的一个Demo,一起分享一下吧


package casual;import java.awt.AWTException;import java.awt.MenuItem;import java.awt.PopupMenu;import java.awt.SystemTray;import java.awt.TrayIcon;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.ImageIcon;import javax.swing.JFrame;public class TestTray {
TrayIcon trayIcon; // 托盘图标 SystemTray tray; // 本操作系统托盘的实例 public TestTray() { final JFrame frame = new JFrame("系统托盘"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例 ImageIcon icon = new ImageIcon("imooc.jpg"); // 将要显示到托盘中的图标 PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单 final MenuItem show = new MenuItem("打开程序"); final MenuItem exit = new MenuItem("退出程序"); pop.add(show); pop.add(exit); trayIcon = new TrayIcon(icon.getImage(), "系统托盘", pop);// 实例化托盘图标 // 为托盘图标监听点击事件 trayIcon.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2)// 鼠标双击图标 { // tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标 frame.setExtendedState(JFrame.NORMAL);// 设置状态为正常 frame.setVisible(true);// 显示主窗体 } } }); // 选项注册事件 ActionListener al2 = new ActionListener() { public void actionPerformed(ActionEvent e) { // 退出程序 if (e.getSource() == exit) { System.exit(0);// 退出程序 } // 打开程序 if (e.getSource() == show) { frame.setExtendedState(JFrame.NORMAL);// 设置状态为正常 frame.setVisible(true); } } }; exit.addActionListener(al2); show.addActionListener(al2); try { tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中 } catch (AWTException ex) { ex.printStackTrace(); } // 为主窗体注册窗体事件 frame.addWindowListener(new WindowAdapter() { // 窗体最小化事件 public void windowIconified(WindowEvent e) { frame.setVisible(false);// 使窗口不可视 frame.dispose();// 释放当前窗体资源 } }); } public static void main(String[] args) { new TestTray(); }}

转载地址:http://ptoso.baihongyu.com/

你可能感兴趣的文章
阿里云胡晓明:数据智能将为城市生活带来真正价值
查看>>
如何设计一款智能烧烤锅?
查看>>
我们需要“脑洞大开”,所以我们需要BitBite
查看>>
程序员和设计师必备的20个CSS工具
查看>>
脱欧将对英国电信运营商造成什么影响?
查看>>
需求迫切 物联网标准制定任重道远
查看>>
揭开知识库问答KB-QA的面纱3·信息抽取篇
查看>>
KDD2016论文精品解读(二)
查看>>
巨亏46亿 国电科环弃光伏“止血”
查看>>
URL安全的Base64编码
查看>>
华为:2020年5G落地前4.5G将迎来规模商用
查看>>
AIR 011 | 人工智能的下一个风口是医疗
查看>>
使用Kotlin来开发Android,这些优缺点要考虑
查看>>
CVPR 2017精彩论文解读:显著降低模型训练成本的主动增量学习
查看>>
匿名者公布64,000名坦桑尼亚电信公司雇员信息
查看>>
弃光频现 新能源企业消纳阵痛加剧
查看>>
图解大型互联网数据中心典型模型
查看>>
成为敏捷巨人?模拟小型创业公司是捷径
查看>>
《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一3.5 Exchange TiP v2——将TiP迁移到Windows Azure云端...
查看>>
Verizon携手KT开展5G协调器互操作性测试
查看>>