zoukankan      html  css  js  c++  java
  • java程序加到系统托盘的方法

      1 package swingtest;
      2 
      3 
      4 import javax.swing.*;
      5 import java.awt.*;
      6 import java.awt.event.ActionEvent;
      7 import java.awt.event.ActionListener;
      8 import java.awt.event.MouseAdapter;
      9 import java.awt.event.MouseEvent;
     10 import java.io.UnsupportedEncodingException;
     11 import java.net.URL;
     12 import java.util.Random;
     13 
     14 
     15 public class MainFrame extends JFrame implements ActionListener {
     16 
     17     private static final long serialVersionUID = -7078030311369039390L;
     18     private JMenu menu;
     19     private JMenuBar jmenuBar;
     20     private String[] jmItemName = {"置于托盘", "系统退出"};
     21 
     22     private MainFrame() throws UnsupportedEncodingException {
     23         super("电话薄");
     24         init();
     25         this.setSize(500, 400);
     26         this.setJMenuBar(jmenuBar);
     27         this.setLocationRelativeTo(null);
     28 
     29         JButton jbutton = new JButton("test");
     30         add(jbutton);
     31 
     32 
     33         systemTray(jbutton);    //系统托盘
     34     }
     35 
     36     /**
     37      * 初始化界面
     38      */
     39     private void init() {
     40         menu = new JMenu("系统窗体");
     41         for (String s : jmItemName) {
     42             JMenuItem menuItem = new JMenuItem(s);
     43             menuItem.addActionListener(this);
     44             menu.add(menuItem);
     45         }
     46         this.jmenuBar = new JMenuBar();
     47         this.jmenuBar.add(menu);
     48     }
     49 
     50     @Override
     51     public void actionPerformed(ActionEvent e) {
     52         String actions = e.getActionCommand();
     53         if ("置于托盘".equals(actions)) {
     54             this.setVisible(false);
     55         }
     56         if ("系统退出".equals(actions)) {
     57             System.exit(0);
     58         }
     59 
     60     }
     61 
     62     /**
     63      * 系统托盘图标处理.
     64      *
     65      * @param jbutton
     66      */
     67     private void systemTray(JButton jbutton) throws UnsupportedEncodingException {
     68         if (SystemTray.isSupported()) {    //判断系统是否支持托盘功能.
     69 //            URL resource = this.getClass().getResource("car.jpg");    //获得图片路径
     70 
     71             URL resource = getClass().getClassLoader().getResource("car.jpg");
     72 //            File targetFile = new File("files/8k.wav");
     73 
     74 //            ClassPathResource classPathResource = new ClassPathResource("static/something.txt");
     75 //
     76 //            InputStream inputStream = classPathResource.getInputStream();
     77             ImageIcon icon = new ImageIcon(resource); //创建图片对象
     78             JPopupMenu popupMenu = new JPopupMenu(); //创建弹出菜单对象
     79             JMenuItem itemExit = new JMenuItem("退出系统");    //创建弹出菜单中的退出项
     80             JMenuItem itemShow = new JMenuItem("显示窗体"); //创建弹出菜单中的显示主窗体项.
     81 
     82 
     83             popupMenu.add(itemExit);
     84             popupMenu.add(itemShow);
     85             TrayIcon trayIcon = new TrayIcon(icon.getImage(), "电话薄系统");
     86             SystemTray sysTray = SystemTray.getSystemTray();
     87 
     88             try {
     89                 sysTray.add(trayIcon);
     90             } catch (AWTException ignored) {
     91             }
     92             trayIcon.addMouseListener(new MouseAdapter() {
     93                 @Override
     94                 public void mouseReleased(MouseEvent e) {
     95                     if (e.isPopupTrigger()) {
     96                         popupMenu.setLocation(e.getX(), e.getY());
     97                         popupMenu.setInvoker(popupMenu);
     98                         popupMenu.setVisible(true);
     99                     }
    100                 }
    101             });
    102             //给窗体最小化添加事件监听.
    103             itemShow.addActionListener(e -> {
    104                 setVisible(true);
    105 
    106             });
    107             //给退出像添加事件监听
    108             itemExit.addActionListener(e -> {
    109 //                System.exit(0);
    110                 sysTray.remove(trayIcon);
    111                 dispose();
    112             });
    113             int count = 0;
    114             jbutton.addActionListener(e -> {
    115                 TrayIcon trayIcon4 = new TrayIcon(icon.getImage(), "电话薄系统");
    116                 try {
    117                     sysTray.add(trayIcon4);
    118                 } catch (AWTException ex) {
    119                     ex.printStackTrace();
    120                 }
    121             });
    122 
    123         }
    124     }
    125 
    126     /**
    127      * 主方法
    128      *
    129      * @param args sdf
    130      */
    131     public static void main(String[] args) throws UnsupportedEncodingException {
    132         new MainFrame().setVisible(true);
    133     }
    134 }
  • 相关阅读:
    函数式编程
    javascript RegExp类型 学习小记
    javascript Date类型 学习笔记
    post 提交数据
    git学习笔记
    Winform DevExpress控件库(一) 使用SplashScreenManager控件定制程序加载页面
    .net 对json数据进行读取
    [WPF]TextTrimming截断后,ToolTip显示完整信息
    删除程序自身
    c/s项目记住账号密码功能
  • 原文地址:https://www.cnblogs.com/yangxiaobo-blog/p/11664355.html
Copyright © 2011-2022 走看看