Java应用程序使用系统托盘资源

简介: 要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1、线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2、获得一个SystemTray,注意我们是通过getSystemTray方法来获取,而不是直接创建一个系统托盘。

要想使自己开发的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();
    }
}
目录
相关文章
|
3天前
|
JavaScript Java BI
Java毕设之新生报到系统的设计与实现
Java毕设之新生报到系统的设计与实现
11 3
|
1天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
4 0
|
1天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
13 5
|
1天前
|
前端开发 Java 应用服务中间件
【异常解决】java程序连接MinIO报错The request signature we calculated does not match the signature you provided.
【异常解决】java程序连接MinIO报错The request signature we calculated does not match the signature you provided.
|
1天前
|
存储 Java API
java对接IPFS系统-以nft.storage为列
java对接IPFS系统-以nft.storage为列
11 2
|
2天前
|
监控 前端开发 Java
Java基于B/S医院绩效考核管理平台系统源码 医院智慧绩效管理系统源码
医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服务质量,增强患者满意度,并促进员工的专业成长
9 0
|
2天前
|
Java 云计算
Java智能区域医院云HIS系统SaaS源码
云HIS提供标准化、信息化、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。优化就医、管理流程,提升患者满意度、基层首诊率,通过信息共享、辅助诊疗等手段,提高基层医生的服务能力构建和谐的基层医患关系。
16 2
|
3天前
|
Java Linux C语言
一步带你了解java程序逻辑控制
一步带你了解java程序逻辑控制
11 2
|
3天前
|
Java 数据安全/隐私保护
java中程序控制的典例
java中程序控制的典例
9 1
|
3天前
|
前端开发 Java 关系型数据库
Java医院绩效考核系统源码B/S架构+springboot三级公立医院绩效考核系统源码 医院综合绩效核算系统源码
作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
22 2