专栏首页Hongtenjava开发_系统托盘

java开发_系统托盘

项目结构:

运行效果:

========================================================================

下面是代码部分:

========================================================================

/tray/src/com/b510/tray托盘/DesktopCapture.java

 1 package com.b510.tray托盘;
 2 
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 import java.awt.event.WindowAdapter;
 6 import java.awt.event.WindowEvent;
 7 
 8 import javax.swing.JFrame;
 9 import javax.swing.JOptionPane;
10 import javax.swing.UIManager;
11 
12 public class DesktopCapture extends JFrame implements ActionListener {
13 
14     /**
15      * 1.改变双击托盘截图为单击托盘截图 2.修复了托盘后无反应BUG 3.将放大镜提示框移至左上角和右上角
16      */
17     private static final long serialVersionUID = 1L;
18     // JButton confirm;
19     // BufferedImage desktopImg;
20     MyTray tray;
21     boolean iconed = false;
22 
23     public DesktopCapture() {
24         super("EasyCapture");
25         init();
26         // 当点击"-"最小化按钮时,系统会最小化到托盘
27         addWindowListener(new WindowAdapter() {
28             public void windowIconified(WindowEvent e) {
29                 iconed = true;
30                 setVisible(false);
31             }
32 
33             // 当点击"X"关闭窗口按钮时,会询问用户是否要最小化到托盘
34             // 是,表示最小化到托盘,否,表示退出
35             public void windowClosing(WindowEvent e) {
36                 int option = JOptionPane.showConfirmDialog(DesktopCapture.this,
37                         "是否最小化到托盘?", "提示:", JOptionPane.YES_NO_OPTION);
38                 if (option == JOptionPane.YES_OPTION) {
39                     iconed = true;
40                     setVisible(false);
41                 } else {
42                     System.exit(0);
43                 }
44             }
45         });
46         pack();
47         setSize(350, 230);
48         setLocation(500, 300);
49         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
50         setResizable(false);
51         setVisible(true);
52     }
53 
54     void init() {
55 
56         tray = new MyTray(DesktopCapture.this);
57     }
58 
59     // 截图
60     public void capture() {
61 
62     }
63 
64     public static void main(String[] args) {
65         // TODO Auto-generated method stub
66         try {
67             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
68             DesktopCapture desk = new DesktopCapture();
69         } catch (Exception e) {
70             // TODO Auto-generated catch block
71             e.printStackTrace();
72         }
73 
74     }
75 
76     @Override
77     public void actionPerformed(ActionEvent e) {
78 
79     }
80 
81 }

/tray/src/com/b510/tray托盘/MyTray.java

 1 package com.b510.tray托盘;
 2 
 3 import java.awt.AWTException;
 4 import java.awt.Image;
 5 import java.awt.MenuItem;
 6 import java.awt.PopupMenu;
 7 import java.awt.SystemTray;
 8 import java.awt.TrayIcon;
 9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11 import java.awt.event.MouseEvent;
12 import java.awt.event.MouseListener;
13 
14 import javax.swing.ImageIcon;
15 import javax.swing.JFrame;
16 
17 public class MyTray implements ActionListener, MouseListener {
18     private Image icon;// 图标
19     private TrayIcon trayIcon;
20     private SystemTray systemTray;// 系统托盘
21 
22     private DesktopCapture frame; // 托盘所属主窗体
23     private PopupMenu pop = new PopupMenu(); // 弹出菜单
24     private MenuItem capture = new MenuItem("capture");
25     private MenuItem show = new MenuItem("open");
26     private MenuItem exit = new MenuItem("exit");
27 
28     public MyTray(DesktopCapture frame) {
29         this.frame = frame;
30         // icon = Toolkit.getDefaultToolkit().getImage("./images/xiaomai.png");
31         icon = new ImageIcon(this.getClass().getClassLoader().getResource(
32                 "image/xiaomai.png")).getImage();
33 
34         if (SystemTray.isSupported()) {
35             systemTray = SystemTray.getSystemTray();
36             trayIcon = new TrayIcon(icon, "单击直接截图-EasyCapture", pop);
37             pop.add(capture);
38             pop.add(show);
39             pop.add(exit);
40 
41             try {
42                 systemTray.add(trayIcon);
43             } catch (AWTException e1) {
44                 e1.printStackTrace();
45                 trayIcon.addMouseListener(this);
46             }
47         }
48         trayIcon.addMouseListener(this);
49         show.addActionListener(this);
50         exit.addActionListener(this);
51         capture.addActionListener(this);
52     }
53 
54     @Override
55     public void actionPerformed(ActionEvent e) {
56         if (e.getSource() == show) {
57             frame.iconed = false;
58             frame.setVisible(true);
59             frame.setExtendedState(JFrame.NORMAL);
60         } else if (e.getSource() == capture) {
61             frame.capture();
62         } else {
63             System.exit(0);
64         }
65 
66     }
67 
68     // ����¼�
69     @Override
70     public void mouseClicked(MouseEvent e) {
71         if (e.getClickCount() == 1 && e.getButton() != MouseEvent.BUTTON3) {
72             frame.capture();
73         }
74     }
75 
76     @Override
77     public void mouseEntered(MouseEvent arg0) {
78         // TODO Auto-generated method stub
79 
80     }
81 
82     @Override
83     public void mouseExited(MouseEvent arg0) {
84         // TODO Auto-generated method stub
85 
86     }
87 
88     @Override
89     public void mousePressed(MouseEvent arg0) {
90         // TODO Auto-generated method stub
91 
92     }
93 
94     @Override
95     public void mouseReleased(MouseEvent arg0) {
96         // TODO Auto-generated method stub
97 
98     }
99 }




               下载源码:
                http://files.cnblogs.com/hongten/tray.zip

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java开发_比较使用ImageReader和BufferedImage获取图片尺寸总结

    Hongten
  • java开发_图片截取

    Hongten
  • java中interface的完整表述

    我用一个工具:java Decompiler反编译工具查看jar包源码的时候,出现了以下代码:

    Hongten
  • Java 图片的旋转

    用户2965768
  • 灯塔大数据孙静博受邀出席世界互联网大会,畅谈企业信息化2.0

    2016年11月16日至18日,以“创新驱动造福人类——携手共建网络空间命运共同体”为主题的第三届世界互联网大会在浙江乌镇召开,来自全球的110多个国家和地区...

    灯塔大数据
  • [EDI 案例] 实现仓储物流与美赞臣EDI对接

    美赞臣营养品公司创立于1905年,创始人为爱德华 · 美赞臣,公司总部位于美国伊利诺斯州的格伦维尤,其全球研发中心及全球运作生产中心则位于美国印地安纳州的埃文思...

    EDI顾问-杨欢
  • 从 0 开始手写一个 Spring MVC 框架,向高手进阶!

    Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面。如果不看Spring的源码,你将会失...

    Java技术栈
  • Python 库大全(上)!熟悉的都是大佬!(附代码讲解)

    请确保使用 import os 而不是 from os import *。第二种方法会导致 os.open() 覆盖系统自带的 open() 函数,这两个函数的...

    Python知识大全
  • Android离线Doc文档访问速度慢的有效解决方法

    (1)我们在访问Android的离线文档,是非常慢的,由于需要加载一些图片或者是动态的脚本语言js代码,

    砸漏
  • netty案例,netty4.1中级拓展篇九《Netty集群部署实现跨服务端通信的落地方案》

    Netty的性能非常好,在一些小型用户体量的socket服务内,仅部署单台机器就可以满足业务需求。但当遇到一些中大型用户体量的服务时,就需要考虑讲Netty按照...

    小傅哥

扫码关注云+社区

领取腾讯云代金券