当前位置:  编程技术>java/j2ee

基于java开发之系统托盘的应用

    来源: 互联网  发布时间:2014-10-24

    本文导语:  项目结构: 运行效果: ======================================================================== 下面是代码部分: ======================================================================== /tray/src/com/b510/tray托盘/DesktopCapture.java 代码如下:package com.b510.tray托盘; ...

项目结构:

运行效果:

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

下面是代码部分:

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

/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做个带任务栏托盘的程序该如何做阿
  • java可以把应用放到“托盘”里吗?
  • HELP ME!!!怎样用JAVA作成系统托盘
  • JAVA应用系统工具快捷托盘实例代码
  • 使用Java实现系统托盘功能的介绍(附源码以及截图)
  • java实现系统托盘示例
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • 不太明白,利用RMI实现JAVA分布式应用 和 EJB实现JAVA分布式应用有什么区别。
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  • Java GUI应用程序开发框架 Axualize
  • Java应用服务器 Virgo
  • JAVA桌面应用服务器 JDAP
  • Java与桌面应用程序
  • Java应用漏洞检测工具 LAPSE+
  • Java 应用自动更新框架 Jupidator
  • 讨论:Java是否适合编写通常的应用程序?
  • 怎样让java应用程序独立运行?
  • 求教!!!VC应用调用Java模块可行吗?
  • Java 应用服务器 WildFly
  • Java企业应用开发框架 Portofino
  • Web应用框架 Pulse-java
  • 求JAVA的具体应用
  • Java模块化应用开发框架 JTheque
  • 请问如何通过telnet的方式启动服务器(solaris)上的用.sh角本方式启动java写的应用程序,在退出telnet时服务器上的应用程序不会退出?
  • Java 应用程序维护工具 MaintainJ
  • 只考虑WEB应用, JAVA适合吗? 除了IIS, 我还能让什么东西来支持我的ASP? JAVA有关的东东有没有好办法?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 统计一下有多少商用软件用Java开发或者将要用Java开发
  • linux下用java开发是不是JB就可以,JAVA在LINUX下开发有优势吧!
  • 请问大家用什么开发java程序,我基本上学会了java语法,不知用什么来开发它?
  • Linux下面的开发好的Java程序,如何部署到其他机器?开发好的Java图形程序,终端上能否用?等问题
  • 开发java应用,用什么开发工具好呢?
  • 开发java程序在用什么开发环境比较好??大家都来谈谈
  • Linux下C语言开发与Windows下java开发,哪个更有前途?
  • 初学者的问题:目前我应该装那一个java开发工具,jbuilder7? JavaScript?有没有java2.0?现在软件公司开发用的是那一种?
  • 请问你们在LINUX下开发java,是怎么配置开发环境的啊?
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • 轻量级Java开发工具 Java Tools
  • 服务湍开发用linux c和java开发哪个性能更好
  • 我怎么没有在java的开发文档看到 Javax.servlet的开发包?在线等...........
  • 我该学习哪一种开发java的开发工具
  • 各位大虾现欲用java开发一套网上投票表决系统 应该看什么书?用什么开发工具?(一定给分!)
  • 求助:从java开发转到linux下C开发可行性
  • 腾讯微博的Java开发包 qq-t-java-sdk
  • 我初学java,请教各位开发java用什么工具好?
  • JAva的主要用来开发哪类软件呀,除了JAVA小程序以外?
  • 能否推荐几本学习Java的好教材呢?那一种Java的开发工具更好呢?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3