• Java中实现系统托盘功能(代码全贴,附加运行截图)


    Java中如何,实现系统托盘功能.

    示例图

    项目包结构图

     

    系统运行截图

    应用核心逻辑说明,隐藏到托盘实质就是讲窗体隐藏.即setVisible(false),显示窗体即就是讲setVisible(true).

    项目代码如下:

      1 package org.pdp.frame;
      2 
      3 import java.awt.AWTException;
      4 import java.awt.MenuItem;
      5 import java.awt.PopupMenu;
      6 import java.awt.SystemTray;
      7 import java.awt.TrayIcon;
      8 import java.awt.event.ActionEvent;
      9 import java.awt.event.ActionListener;
     10 import java.net.URL;
     11 
     12 import javax.swing.ImageIcon;
     13 import javax.swing.JFrame;
     14 import javax.swing.JMenu;
     15 import javax.swing.JMenuBar;
     16 import javax.swing.JMenuItem;
     17 
     18 
     19 public class MainFrame extends JFrame implements ActionListener{
     20 
     21     private static final long serialVersionUID = -7078030311369039390L;
     22     private JMenu menu;
     23     private JMenuBar jmenuBar;
     24     private String [] jmItemName = {"置于托盘","系统退出"};
     25     
     26     public MainFrame(){
     27         super("电话薄");
     28         init();
     29         this.setSize(500,400);
     30         this.setJMenuBar(jmenuBar);
     31         this.setLocationRelativeTo(null);
     32         systemTray();    //系统托盘
     33     }
     34     
     35     /**
     36      * 初始化界面
     37      */
     38     public void init(){
     39         menu = new JMenu("系统窗体");
     40         for(int i=0; i<jmItemName.length; i++){
     41             JMenuItem menuItem = new JMenuItem(jmItemName[i]);
     42             menuItem.addActionListener(this);
     43             menu.add(menuItem);
     44         }
     45         this.jmenuBar = new JMenuBar();
     46         this.jmenuBar.add(menu);
     47     }
     48     
     49     @Override
     50     public void actionPerformed(ActionEvent e) {
     51         String actions = e.getActionCommand();
     52         if("置于托盘".equals(actions)){
     53             this.setVisible(false);
     54         }
     55         if("系统退出".equals(actions)){
     56             System.exit(0);
     57         }
     58         
     59     }
     60     
     61     /**系统托盘图标处理.*/
     62     private void  systemTray(){
     63         if(SystemTray.isSupported()){    //判断系统是否支持托盘功能.
     64             URL resource = this.getClass().getResource("systray.jpg");    //获得图片路径
     65             ImageIcon icon = new ImageIcon(resource); //创建图片对象
     66             PopupMenu popupMenu = new PopupMenu(); //创建弹出菜单对象
     67             MenuItem itemExit = new MenuItem("退出系统");    //创建弹出菜单中的退出项
     68             MenuItem itemShow = new MenuItem("显示窗体"); //创建弹出菜单中的显示主窗体项.
     69             itemExit.addActionListener(new ActionListener() {     //给退出像添加事件监听
     70                 @Override
     71                 public void actionPerformed(ActionEvent e) {
     72                     System.exit(0);
     73                 }            
     74             });
     75             itemShow.addActionListener(new ActionListener() { //给窗体最小化添加事件监听.
     76                 @Override
     77                 public void actionPerformed(ActionEvent e) {
     78                     setVisible(true);
     79                 }
     80             });
     81             popupMenu.add(itemExit);
     82             popupMenu.add(itemShow);
     83             TrayIcon trayIcon = new TrayIcon(icon.getImage(),"电话薄系统",popupMenu);
     84             SystemTray sysTray = SystemTray.getSystemTray();
     85             try {
     86                 sysTray.add(trayIcon);
     87             } catch (AWTException e1) {    }
     88         }
     89     }
     90     
     91     /**
     92      * 主方法
     93      * @param args
     94      */
     95     public static void main(String[] args) {
     96 
     97         new MainFrame().setVisible(true);
     98     
     99     }
    100 
    101 }

     转载请注明出处[http://www.cnblogs.com/dennisit/archive/2012/12/25/2833060.html]

      在线交谈

  • 相关阅读:
    Linq to sql与EF零碎知识点总结
    个人总结js客户端验证
    asp.net、mvc、ajax、js、jquery、sql、EF、linq、netadvantage第三方控件知识点笔记
    c#、sql、asp.net、js、ajax、jquery大学知识点笔记
    ActiveMQ 事务和XA
    三次握手“释放”连接
    ActiveMQ 集群和主从
    ActiveMQ 配置jdbc主从
    ActiveMQ 的连接和会话
    ActiveMQ 处理不同类型的消息
  • 原文地址:https://www.cnblogs.com/dennisit/p/2833060.html
Copyright © 2020-2023  润新知