要想使自己开发的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();
    }
}

Java应用程序使用系统托盘资源的更多相关文章

  1. WinForm 程序在系统托盘显示

    前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...

  2. java web 程序---投票系统

    1.这里会连接数据库--JDBC的学习实例 一共有3个页面. 2.第一个页面是一个form表单,第二个页面是处理数据,第三个页面是显示页面 vote.jsp <body bgcolor=&quo ...

  3. Python Flask构建微信小程序订餐系统 学习 资源

    一.Flask MVC框架结构  1.1实际项目结构   1.2application.py  项目配置文件Flask之flask-script模块使用  static.py 文件(部署到生成环境不需 ...

  4. WP7系统托盘和应用程序栏

    (一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...

  5. Java应用程序项目的打包与发行

    Java应用程序项目的打包与发行    这里主要是讲解一下怎样将 Java程序打包成独立运行的exe程序包,以下这种方法应该是最佳的解决方案了.NetDuke的EXE 程序包了是使用这种方案制作的.在 ...

  6. java程序加到系统托盘的方法

    package swingtest; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; impor ...

  7. Java程序员开发参考资源

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  8. MFC程序最小化到系统托盘及其响应函数

    预备知识: Windows API函数: WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid ...

  9. C#编写WIN32系统托盘程序

    基本功能概述: 程序运行后驻留系统托盘,左键呼出,右键退出.后续可加右键菜单. 注册系统案件WIN+F10,呼出程序. 重写系统消息,最小化和关闭按钮隐藏程序 using System; using ...

随机推荐

  1. WeihanLi.Npoi

    WeihanLi.Npoi Intro Npoi 扩展,适用于.netframework4.5及以上和netstandard2.0, .netframework基于NPOI, .netstandard ...

  2. machine learning 之 Neural Network 1

    整理自Andrew Ng的machine learning课程week 4. 目录: 为什么要用神经网络 神经网络的模型表示 1 神经网络的模型表示 2 实例1 实例2 多分类问题 1.为什么要用神经 ...

  3. 用Matlab画直方图

    简介 本文介绍如何使用matlab定制自己的直方图. 关键 使用Matlab的 bar() 函数创建柱状图 bar() 画的bin的高度跟数据相关 bar() 数据每一列一个group,有几列数据就画 ...

  4. (二)ROS系统架构及概念 ROS Architecture and Concepts 以Kinetic为主更新 附课件PPT

    第2章 ROS系统架构及概念 ROS Architecture and Concepts PPT说明: 正文用白色,命令或代码用黄色,右下角为对应中文译著页码. 这一章需要掌握ROS文件系统,运行图级 ...

  5. iOS 中的block异常

    转自:iOS 知识小集 我们在调用block时,如果这个block为nil,则程序会崩溃,报类似于EXC_BAD_ACCESS(code=1, address=0xc)异常[32位下的结果,如果是64 ...

  6. Swift中关于任意类型的数组

    在Objc中你是不可以把一个非对象类型放入数组的,你必须将其"封箱",然后再放入数组. 在Swift中你可将非对象类型轻松放入数组: let ary = [1,2,3] 你可以明确 ...

  7. actionbar详解(二)

    经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对较为深刻的理解了.唯一欠缺的是,前面我们都只是学习了理论知识而已,虽然知识点已经掌握了,但是真正投入到项目实战当中时会不会掉链子还很 ...

  8. JAVA面向对象-----接口的概述

    接口的概述 **接口(interface):**usb接口,主要是使用来拓展笔记本的功能,那么在java中的接口主要是使用来拓展定义类的功能,可以弥补java中单继承的缺点. class Pencil ...

  9. java学习路线图-----java基础学习路线图(J2SE学习路线图)

    安装JDK和开发软件跳过,网上太多了,不做总结,以下是我总结的学习路线图,欢迎补充. JAVA基础语法 注释,标识符命名规则及Java中的关键字 Java基本数据类型 Java运算符与表达式 Java ...

  10. Linux系统编程----僵尸进程

    什么是僵尸进程? 僵尸进程, 指子进程退出后, 父进程还没有回收子进程的资源,这个子进程就处在于僵尸状态. 来看看如何产生? #include <stdio.h> #include < ...