基于java开发之系统托盘的应用
项目结构:
运行效果:
========================================================================
下面是代码部分:
========================================================================
/tray/src/com/b510/tray托盘/DesktopCapture.java 代码如下:
package com.b510.tray托盘; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.UIManager; public class DesktopCapture extends JFrame implements ActionListener { /** * 1.改变双击托盘截图为单击托盘截图 2.修复了托盘后无反应BUG 3.将放大镜提示框移至左上角和右上角 */ private static final long serialVersionUID = 1L; // JButton confirm; // BufferedImage desktopImg; MyTray tray; boolean iconed = false; public DesktopCapture() { super("EasyCapture"); init(); // 当点击"-"最小化按钮时,系统会最小化到托盘 addWindowListener(new WindowAdapter() { public void windowIconified(WindowEvent e) { iconed = true; setVisible(false); } // 当点击"X"关闭窗口按钮时,会询问用户是否要最小化到托盘 // 是,表示最小化到托盘,否,表示退出 public void windowClosing(WindowEvent e) { int option = JOptionPane.showConfirmDialog(DesktopCapture.this, "是否最小化到托盘?", "提示:", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { iconed = true; setVisible(false); } else { System.exit(0); } } }); pack(); setSize(350, 230); setLocation(500, 300); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setResizable(false); setVisible(true); } void init() { tray = new MyTray(DesktopCapture.this); } // 截图 public void capture() { } public static void main(String[] args) { // TODO Auto-generated method stub try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); DesktopCapture desk = new DesktopCapture(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { } }
/tray/src/com/b510/tray托盘/MyTray.java 代码如下:
package com.b510.tray托盘; import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.ImageIcon; import javax.swing.JFrame; public class MyTray implements ActionListener, MouseListener { private Image icon;// 图标 private TrayIcon trayIcon; private SystemTray systemTray;// 系统托盘 private DesktopCapture frame; // 托盘所属主窗体 private PopupMenu pop = new PopupMenu(); // 弹出菜单 private MenuItem capture = new MenuItem("capture"); private MenuItem show = new MenuItem("open"); private MenuItem exit = new MenuItem("exit"); public MyTray(DesktopCapture frame) { this.frame = frame; // icon = Toolkit.getDefaultToolkit().getImage("./images/xiaomai.png"); icon = new ImageIcon(this.getClass().getClassLoader().getResource( "image/xiaomai.png")).getImage(); if (SystemTray.isSupported()) { systemTray = SystemTray.getSystemTray(); trayIcon = new TrayIcon(icon, "单击直接截图-EasyCapture", pop); pop.add(capture); pop.add(show); pop.add(exit); try { systemTray.add(trayIcon); } catch (AWTException e1) { e1.printStackTrace(); trayIcon.addMouseListener(this); } } trayIcon.addMouseListener(this); show.addActionListener(this); exit.addActionListener(this); capture.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == show) { frame.iconed = false; frame.setVisible(true); frame.setExtendedState(JFrame.NORMAL); } else if (e.getSource() == capture) { frame.capture(); } else { System.exit(0); } } // ����¼� @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 1 && e.getButton() != MouseEvent.BUTTON3) { frame.capture(); } } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }
以上是 基于java开发之系统托盘的应用 的全部内容,
来源链接:
utcz.com/p/207860.html