⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 使Java应用程序可以显示在Windows系统托盘上的完整源代码
💻 JAVA
字号:
package notifyicon;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MainFrame extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    ImageIcon ico=null;
    ImageIcon ico2=null;
    public MainFrame() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
            ico=new ImageIcon(
                    notifyicon.NotifyDemo.class.getResource(
                            "imgs/1.png"));//创建图标对象
            ico2=new ImageIcon(
                    notifyicon.NotifyDemo.class.getResource(
                            "imgs/2.png"));//创建图标对象

        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(400, 300));
        setTitle("Notify");
        this.addWindowListener(new MainFrame_this_windowAdapter(this));//添加window监听器
    }

    SystemTray tray;//定义系统托盘
    TrayIcon trayIco;//定义系统托盘图标
    PopupMenu mnuPop;//定义弹出式菜单
    MenuItem mnuOpen;//定义打开菜单项
    MenuItem mnuMsg;//定义消息菜单项
    MenuItem mnuBlink;//定义闪烁菜单项

    public void this_windowIconified(WindowEvent e) {
        if(!SystemTray.isSupported())//判断当前系统是否支持托盘
            return;
        if(tray==null)
        {
            tray = SystemTray.getSystemTray();//获取系统托盘
            mnuPop = new PopupMenu();//创建菜单和菜单项
            mnuOpen = new MenuItem("Open");
            mnuMsg=new MenuItem("Message");
            mnuBlink=new MenuItem("Blink");
            mnuOpen.addActionListener(new ActionListener(){//添加打开菜单监听
                public void actionPerformed(ActionEvent ae)
                {
                    openWindow();
                }
            });
            mnuMsg.addActionListener(new ActionListener(){//添加消息菜单监听
                public void actionPerformed(ActionEvent ae)
                {
                    displayMsg();
                }
            });
            mnuBlink.addActionListener(new ActionListener(){//添加闪烁菜单监听
                public void actionPerformed(ActionEvent ae)
                {
                    blinkImage();
                }
            });
            mnuPop.add(mnuOpen);
            mnuPop.add(mnuMsg);
            mnuPop.add(mnuBlink);
            trayIco = new TrayIcon(ico.getImage(), "Tray Demo", mnuPop);//创建系统托盘图标
        }
        try {
            tray.add(trayIco);//将系统托盘图标加入系统托盘
        } catch (Exception ex) {
        }
        this.setVisible(false);//隐藏窗体
    }

    private void openWindow()
    {
        this.setVisible(true); //恢复窗体可见性
        this.setExtendedState(JFrame.NORMAL);   //显示窗体
    }
    private void displayMsg()
    {
        trayIco.displayMessage("Title","Welcome",TrayIcon.MessageType.INFO);//显示托盘消息
    }

    private void blinkImage()
    {
        Thread th=new BlinkThread();  //创建闪烁线程
        th.start();
    }
    public void this_windowDeiconified(WindowEvent windowEvent) {
        try {
            tray.remove(trayIco);//移除托盘图标
        } catch (Exception ex) {
        }
    }

    class BlinkThread extends Thread
    {
        public void run(){
            int i = 0;
            while (i < 10) {
                try {
                    trayIco.setImage(ico2.getImage());
                    Thread.sleep(100);
                    trayIco.setImage(ico.getImage());
                    Thread.sleep(100);
                } catch (Exception ex) {
                }
                i++;
            }
        }
    }
}


class MainFrame_this_windowAdapter extends WindowAdapter {
    private MainFrame adaptee;
    MainFrame_this_windowAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void windowIconified(WindowEvent e) {
        adaptee.this_windowIconified(e);
    }

    public void windowDeiconified(WindowEvent windowEvent) {
        adaptee.this_windowDeiconified(windowEvent);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -