项目结构:
运行效果:
========================================================================
下面是代码部分:
========================================================================
/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