zoukankan      html  css  js  c++  java
  • springboot启动创建系统托盘及功能

    springboot启动创建系统托盘及功能

    修改启动类

    添加构造函数:

        public TjtoolApplication() {
            initUI();
        }
    
        private void initUI() {
            if (SystemTray.isSupported()) {// 判断系统是否托盘
                TrayIcon icon = new TrayIcon(Toolkit.getDefaultToolkit()
                        .getImage(TjtoolApplication.class.getClassLoader().getResource("main.jpg")));// 创建一个托盘图标对象
                icon.setToolTip("爬虫服务已开启");
                icon.setImageAutoSize(true);
                PopupMenu menu = new PopupMenu();// 创建弹出菜单
                MenuItem item1 = new MenuItem("打开"); // 添加一个用于打开的按钮
                item1.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        try {
                            Runtime.getRuntime().exec("cmd /c start http://localhost:8080/");
                        } catch (IOException e2) {
                            e2.printStackTrace();
                        }
                    }
                });
                menu.add(item1);// 添加弹出菜单到托盘图标
                MenuItem item = new MenuItem("退出"); // 添加一个用于退出的按钮
                item.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.exit(0);
                    }
                });
                menu.add(item);// 添加弹出菜单到托盘图标
                icon.setPopupMenu(menu);
                SystemTray tray = SystemTray.getSystemTray();// 获取系统托盘
                try {
                    tray.add(icon);
                } catch (AWTException e1) {
                    e1.printStackTrace();
                } // 将托盘图表添加到系统托盘
                icon.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent evt) {
                        if (evt.getClickCount() == 2) {// 处理鼠标双击
                            try {
                                Runtime.getRuntime().exec("cmd /c start http://localhost:8080/");
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        super.mouseClicked(evt);
                    }
                });
            }
        }

    其中具体功能菜单可根据自己需求进行修改完善

    修改启动函数:

    public static void main(String[] args) {
    
            ConfigurableApplicationContext ctx = new SpringApplicationBuilder(TjtoolApplication.class).headless(false)
                    .run(args);
            EventQueue.invokeLater(() -> {
                ctx.getBean(TjtoolApplication.class);
            });
        }

    全量代码:

    package com.tool;
    
    import java.awt.AWTException;
    import java.awt.EventQueue;
    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.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.io.IOException;
    
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.context.ConfigurableApplicationContext;
    
    @SpringBootApplication
    public class TjtoolApplication {
    
        public static void main(String[] args) {
    
            ConfigurableApplicationContext ctx = new SpringApplicationBuilder(TjtoolApplication.class).headless(false)
                    .run(args);
            EventQueue.invokeLater(() -> {
                ctx.getBean(TjtoolApplication.class);
            });
            // 启动打开默认浏览器访问
            try {
                Runtime.getRuntime().exec("cmd /c start http://localhost:8080/");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public TjtoolApplication() {
            initUI();
        }
    
        private void initUI() {
            if (SystemTray.isSupported()) {// 判断系统是否托盘
                TrayIcon icon = new TrayIcon(Toolkit.getDefaultToolkit()
                        .getImage(TjtoolApplication.class.getClassLoader().getResource("main.jpg")));// 创建一个托盘图标对象
                icon.setToolTip("爬虫服务已开启");
                icon.setImageAutoSize(true);
                PopupMenu menu = new PopupMenu();// 创建弹出菜单
                MenuItem item1 = new MenuItem("打开"); // 添加一个用于打开的按钮
                item1.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        try {
                            Runtime.getRuntime().exec("cmd /c start http://localhost:8080/");
                        } catch (IOException e2) {
                            e2.printStackTrace();
                        }
                    }
                });
                menu.add(item1);// 添加弹出菜单到托盘图标
                MenuItem item = new MenuItem("退出"); // 添加一个用于退出的按钮
                item.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.exit(0);
                    }
                });
                menu.add(item);// 添加弹出菜单到托盘图标
                icon.setPopupMenu(menu);
                SystemTray tray = SystemTray.getSystemTray();// 获取系统托盘
                try {
                    tray.add(icon);
                } catch (AWTException e1) {
                    e1.printStackTrace();
                } // 将托盘图表添加到系统托盘
                icon.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent evt) {
                        if (evt.getClickCount() == 2) {// 处理鼠标双击
                            try {
                                Runtime.getRuntime().exec("cmd /c start http://localhost:8080/");
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        super.mouseClicked(evt);
                    }
                });
            }
        }
    }

    其中main.jpg 存放位置:


    该功能用途: 

    在项目启动时,会自动在系统右下角创建系统托盘图标;

    当我们使用springboot+vue开发了本地使用插件时,并且在启动时隐藏命令行窗口启动,这时用户想关联程序需要在进程中关闭,较麻烦

    可以使用这种方式,在系统托盘中添加图标,并携带退出功能


    可能遇到的问题:

    托盘的中文乱码

    Eclipse中

    右键项目->Run AS ->Run Configurations ->Arguments->VM arguments

    中添加

    -Dfile.encoding=gbk


    springboot打包jar转exe启动操作可以看我另一博客:

    springboot项目打包jar 并打包为exe启动


    结束

  • 相关阅读:
    ExtJs学习笔记之ComboBox组件
    ExtJs学习笔记之学习小结LoginDemo
    ExtJs学习笔记之Button组件
    ExtJs学习笔记之TextField
    WAF指纹识别和XSS过滤器绕过技巧
    python中的迭代与递归
    使用Python对文档单词进行计数
    Python正则表达式使用实例
    Python十六进制与字符串的转换
    数组名a,数组名取地址&a,数组首地址&a[0],数组指针*p
  • 原文地址:https://www.cnblogs.com/zktww/p/15562762.html
Copyright © 2011-2022 走看看