zoukankan      html  css  js  c++  java
  • 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]

      在线交谈

  • 相关阅读:
    ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏
    初学Larevel 2014-08-21 11:24 90人阅读 评论(0) 收藏
    初学PHP&MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
    codeforces 570 E. Pig and Palindromes (dp)
    codeforces 570 D. Tree Requests (dfs序)
    poj 2157 Maze (bfs)
    cf 570 C. Replacement (暴力)
    cf 570B B. Simple Game(构造)
    cf 570 A. Elections
    hdu 1429胜利大逃亡(续) (bfs+状态压缩)
  • 原文地址:https://www.cnblogs.com/dennisit/p/2833060.html
Copyright © 2011-2022 走看看