前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java开发_系统托盘

java开发_系统托盘

作者头像
Hongten
发布2018-09-13 16:20:17
6920
发布2018-09-13 16:20:17
举报
文章被收录于专栏:HongtenHongten

项目结构:

运行效果:

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

下面是代码部分:

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

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

代码语言:javascript
复制
 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

代码语言:javascript
复制
 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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-06-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档