JavaSwing实现系统托盘

本文介绍了一个Java程序示例,演示了如何在系统托盘中添加图标,并为其配置弹出菜单及响应事件。该示例使用了AWT库中的类来创建托盘图标、菜单项以及监听器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.awt.Image;

import java.awt.MenuItem;

import java.awt.PopupMenu;

import java.awt.SystemTray;

import java.awt.Toolkit;

import java.awt.TrayIcon;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;



public class AddTrayIcon implements ActionListener {

    /*

     * 此类用于添加系统托盘 只需要将frame传递过来即可

     */

    private MenuItem openItem;

    private MenuItem exitItem;



    public AddTrayIcon() {

        addTrayIcon();

    }



    private void addTrayIcon() { // 添加系统图盘

        if (SystemTray.isSupported()) { // 判断系统是否支持图盘

            SystemTray tray = SystemTray.getSystemTray();

            Image image = Toolkit.getDefaultToolkit().getImage(

                    "lib/images/Snake.jpg");

            PopupMenu popup = new PopupMenu(); // 为托盘添加菜单

            {

                openItem = new MenuItem("打开                                ");   //PopupMenu没有像JPopupMenu一样直接实现设置大小的方法

                openItem.addActionListener(this);

                popup.add(openItem);



                exitItem = new MenuItem("退出");

                exitItem.addActionListener(this);

                popup.add(exitItem);

            }

            TrayIcon trayIcon = new TrayIcon(image, "ACM图书管理系统", popup);

            trayIcon.addMouseListener(new java.awt.event.MouseAdapter() {

                @Override

                public void mouseClicked(MouseEvent e) {

                    if (e.getClickCount() == 2) {

                        MainFrame.frame.setVisible(true);

                    }

                }

            });

            try {

                tray.add(trayIcon);

            } catch (Exception e) {

                e.printStackTrace();

            }



        }



    }



    public void actionPerformed(ActionEvent aet) {

        if (aet.getSource() == openItem) { // 显示主界面

            MainFrame.frame.setVisible(true);

        }

        if (aet.getSource() == exitItem) { // 退出系统

            System.exit(0);

        }



    }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值