使用Java实现系统托盘功能的介绍(附源码以及截图)

2016-02-19 09:50 6 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的使用Java实现系统托盘功能的介绍(附源码以及截图)懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

示例图

项目包结构图

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

 

系统运行截图

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

项目代码如下:
代码如下:

package org.pdp.frame;

 import java.awt.AWTException;
 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.net.URL;

 import javax.swing.ImageIcon;
 import javax.swing.JFrame;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;

 
 public class MainFrame extends JFrame implements ActionListener{

     private static final long serialVersionUID = -7078030311369039390L;
     private JMenu menu;
     private JMenuBar jmenuBar;
     private String [] jmItemName = {"置于托盘","系统退出"};

     public MainFrame(){
         super("电话薄");
         init();
         this.setSize(500,400);
         this.setJMenuBar(jmenuBar);
         this.setLocationRelativeTo(null);
         systemTray();    //系统托盘
     }

     /**
      * 初始化界面
      */
     public void init(){
         menu = new JMenu("系统窗体");
         for(int i=0; ijmItemName.length; i++){
             JMenuItem menuItem = new JMenuItem(jmItemName[i]);
             menuItem.addActionListener(this);
             menu.add(menuItem);
         }
         this.jmenuBar = new JMenuBar();
         this.jmenuBar.add(menu);
     }

     @Override
     public void actionPerformed(ActionEvent e) {
         String actions = e.getActionCommand();
         if("置于托盘".equals(actions)){
             this.setVisible(false);
         }
         if("系统退出".equals(actions)){
             System.exit(0);
         }

     }

     /**系统托盘图标处理.*/
     private void  systemTray(){
         if(SystemTray.isSupported()){    //判断系统是否支持托盘功能.
             URL resource = this.getClass().getResource("systray.jpg");    //获得图片路径
             ImageIcon icon = new ImageIcon(resource); //创建图片对象
             PopupMenu popupMenu = new PopupMenu(); //创建弹出菜单对象
             MenuItem itemExit = new MenuItem("退出系统");    //创建弹出菜单中的退出项
             MenuItem itemShow = new MenuItem("显示窗体"); //创建弹出菜单中的显示主窗体项.
             itemExit.addActionListener(new ActionListener() {     //给退出像添加事件监听
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     System.exit(0);
                 }           
             });
             itemShow.addActionListener(new ActionListener() { //给窗体最小化添加事件监听.
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     setVisible(true);
                 }
             });
             popupMenu.add(itemExit);
             popupMenu.add(itemShow);
             TrayIcon trayIcon = new TrayIcon(icon.getImage(),"电话薄系统",popupMenu);
             SystemTray sysTray = SystemTray.getSystemTray();
             try {
                 sysTray.add(trayIcon);
             } catch (AWTException e1) {    }
         }
     }

     /**
      * 主方法
      * @param args
      */
     public static void main(String[] args) {

         new MainFrame().setVisible(true);

     }

 }

来源:https://www.tulaoshi.com/n/20160219/1592358.html

延伸阅读
快速排序作为一种高效的排序算法被广泛应用,SUN的JDK中的Arrays.sort 方法用的就是快排。 快排采用了经典的分治思想(divide and conquer): Divide: 选取一个基元X(一般选取数组第一个元素),通过某种分区操作(partitioning)将数组划分为 两个部分: 左半部分小于等于X,右半部分大于等于X。 Conquer: 左右两个子数组递归地调用Div...
 1.打开各种系统工具            2.定时关机(重启、睡眠未实现 请参照上面两个文章自行扩展)            3.简单文件操作 代码如下: [java]  package com.cxy.f;  import java.awt.Image;  import java.aw...
今天因为要做一个设置开机画面的功能,主要是让用户可以设置自己的开机画面,应用层需要做让用户选择开机画面图片的功能。所以需要做一个简单的图片浏览选择程序。最后选用Gallery作为基本控件。加入了一些炫一点的元素,做成3D滑动效果。下面是Demo例子截图: 这个效果网上已经很多人做出来了,只是这次需要用到,所以自己也实践了一下(...
标签: Web开发
  FtpList部分是用来显示FTP服务器上的文件;   GetButton部分为从FTP服务器下传一个文件;   PutButton部分为向FTP服务器上传一个文件。   别忘了在程序中还要引入两个库文件(import sun.net.*,import sun.net.ftp.*)。   以下是这三部分的JAVA源程序:   (1)显示FTP服务器上的文件  ...
Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码。 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能。 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反...

经验教程

844

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部