`
KG1898
  • 浏览: 29366 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java实现系统托盘

阅读更多

工作需要:用swing做一个数据交换的客户端,要求很简单仅仅是一个系统托盘图标;

在网上搜索一番之后发现了一个写得不错的帖子,于是借来收藏也跟大家分享一下。

 

桌面的系统托盘即当程序最小化或者关闭按钮程序并没有退出,而是最小化在任务状态区域(Windows系统),当鼠标点击那个区域所在的图标有提示以及其 他的操作。在 Microsoft Windows 上,它被称为“任务栏状态区域 (Taskbar Status Area)”,在 Gnome 上,它被称为“通知区域 (Notification Area)”,在 KDE 上,它被成为“系统托盘 (System Tray)”。系统托盘由运行在桌面上的所有应用程序共享。

       jdk1.6 中新增了两个类来实现:SystemTray 和 TrayIcon,以下为详细介绍:

      SystemTray 类介绍: 

       在某些平台上,可能不存在或不支持系统托盘,所以要首先使用SystemTray.isSupported()来检查当前的系统是否支持系统托盘

    SystemTray 可以包含一个或多个 TrayIcon,可以使用 add(java.awt.TrayIcon) 方法将它们添加到托盘,当不再需要托盘时,使用 remove(java.awt.TrayIcon) 移除它。TrayIcon 由图像、弹出菜单和一组相关侦听器组成。

        每个 Java 应用程序都有一个 SystemTray 实例,在应用程序运行时,它允许应用程序与桌面系统托盘建立连接。SystemTray 实例可以通过getSystemTray ()方法获得。应用程序不能创建自己的 SystemTray 实例。
 
        TrayIcon类介绍:
        TrayIcon 对象表示可以添加到系统托盘的托盘图标。TrayIcon 可以包含工具提示(文本)、图像、弹出菜单和一组与之关联的侦听器。
 
         TrayIcon 可以生成各种 MouseEvent,并支持添加相应的侦听器,以接收这些事件的通知。TrayIcon 可以自己处理一些事件。例如,默认情况下,在 TrayIcon 上单击鼠标右键时,它将显示指定的弹出菜单。当鼠标悬停到 TrayIcon 上时,它将显示工具提示。
      如:TrayIcon(Image image, String tooltip, PopupMenu popup)  创建带指定图像、工具提示和弹出菜单的 TrayIcon

当鼠标放在这个“OK”上的提示

 

当鼠标右键点击“OK”上的显示

 

测试代码如下(注:jdk1.6):

package com.miracle;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class SystemTrayDemo extends JFrame {
  /**
  * Swing应用程序系统托盘的例子
  */
  private static final long serialVersionUID = 1L;

  private TrayIcon trayIcon = null;

  public SystemTrayDemo() {
    this.setTitle("系统托盘的例子");
    jbInit();
    this.setSize(300, 350); //大小
    this.setLocation(300, 300); //位置
  }

  public void jbInit() {
    if (SystemTray.isSupported()) { //检查当前系统是否支持系统托盘
      SystemTray tray = SystemTray.getSystemTray();//获取表示桌面托盘区的 SystemTray 实例。
      String imgPath = System.getProperty("user.dir")+"\\src\\picture\\icon.jpg";
      Image image = Toolkit.getDefaultToolkit().getImage(imgPath);
      PopupMenu popupMenu = new PopupMenu();
      MenuItem exitItem = new MenuItem("退出");
      MenuItem openItem = new MenuItem("打开");
      openItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          showIT(true);
          System.out.println("右键点击菜单选项打开\n");
        }
      });
      exitItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          try {
            System.exit(0);
          } catch (Exception ex) {
            ex.printStackTrace();
          }
        }
      });
      popupMenu.add(openItem);
      popupMenu.add(exitItem);
      trayIcon = new TrayIcon(image, "系统托盘图标", popupMenu);
      trayIcon.addMouseListener(new java.awt.event.MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
          if (e.getClickCount() == 2) {
            showIT(true);
            System.out.println("双击系统托盘图标打开\n");
          }
        }
      });
      try {
        tray.add(trayIcon); // 将 TrayIcon 添加到 SystemTray。 
      } catch (AWTException e) {
        System.err.println(e);
      }
    } else {
      System.out.println("你的系统不支持系统托盘");
    }
    ImageIcon icon = new ImageIcon();
    try {
      URL url = new URL("http://img1.qq.com/ent/pics/11436/11436218.jpg");
      icon = new ImageIcon(url);
    } catch (Exception e) {
      
    }
    JButton btn = new JButton(icon);
    this.setLayout(new BorderLayout());
    this.add(btn,BorderLayout.CENTER);
    this.add(new JButton("North"),BorderLayout.NORTH);
    this.add(new JButton("South"),BorderLayout.SOUTH);
    this.add(new JButton("West"),BorderLayout.WEST);
    this.add(new JButton("East"),BorderLayout.EAST);
  }

  public void showIT(boolean visable) {
    if (this.isVisible() != visable)
      this.setVisible(visable);
  }

  public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new SystemTrayDemo().setVisible(true);
      }
    });
  }
}
 最后附上原文地址http://www.blogjava.net/kissjava/archive/2008/07/30/218654.html

 

分享到:
评论

相关推荐

    java实现系统托盘

    在`java实现系统托盘.java`文件中,你可能会看到一个使用`TrayIcon`类的例子。而在`java(JNI)实现系统托盘2.txt`中,文档可能详细解释了JNI实现的各个部分,包括本地方法的定义、C/C++代码的编写和编译过程。 无论...

    JAVA实现系统托盘

    ### JAVA实现系统托盘知识点详解 #### 一、概述 在现代软件开发中,系统托盘功能被广泛应用于各类应用程序中,特别是在Windows操作系统上。它为用户提供了方便的应用程序控制方式,同时也帮助开发者以更优雅的方式...

    java 实现系统托盘

    解压即可运行,适用于初学者

    Java系统托盘 Java系统托盘

    Java中的系统托盘功能主要通过Java的Swing库来实现,下面我们将详细探讨如何使用Java实现系统托盘。 首先,我们需要导入相关的Java库,特别是javax.swing.*,因为系统托盘的功能主要包含在这个库中。以下是一个简单...

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

    以下是一个详细的步骤来解释如何使用Java实现系统托盘功能: 1. **检查系统支持**: 在Java中,`SystemTray`类是用于处理系统托盘功能的。首先,我们需要检查当前操作系统是否支持系统托盘。这可以通过调用`...

    java系统托盘 java 系统托盘 系统托盘 java 系统托盘java java任务栏 java 任务栏 任务栏java 任务栏 java 源代码

    总结来说,Java的系统托盘功能使得开发者可以创建更加友好且易于访问的应用程序,通过`TrayIcon`类提供的API,能够轻松实现图标显示、用户交互以及弹出菜单等功能,从而提升应用的易用性和可维护性。

    JAVA系统托盘图标控制程序

    这个"JAVA系统托盘图标控制程序"是一个示例项目,展示了如何在Java中实现这样的功能。 首先,我们要了解`TrayIcon`类,这是Java Swing库中的一个关键组件,用于在系统托盘中创建和管理图标。在`TrayIconDemo.java`...

    java程序实现系统托盘功能

    在Java编程环境中,实现系统托盘功能是一项常见的需求,它允许程序在主窗口最小化或关闭后仍然在操作系统任务栏的系统托盘区域保持活跃,从而提供便捷的访问入口,如QQ、微信等应用程序就广泛使用了这一特性。...

    Java如何构建系统托盘图标程序

    首先,我们需要了解Java中的`java.awt.TrayIcon`类,这是Java标准版(Java SE)从6.0版本开始引入的,专门用于实现系统托盘图标功能。`TrayIcon`类允许我们将图标和菜单项添加到系统托盘中,以便在应用程序运行时与...

    java实现了系统托盘的主类

    实现了java的系统托盘等等之类的。要看的可以see see 额

    Swing 实现系统托盘

    在Java的Swing库中,实现系统托盘功能可以为应用程序提供一个持续的交互界面,即使主窗口已经最小化或关闭。系统托盘,也称为通知区域或系统通知区,通常位于操作系统任务栏的右侧,允许用户快速访问常用的功能或...

    java实现系统托盘示例

    在Java中,从JDK 1.6开始,引入了`java.awt.SystemTray`和`java.awt.TrayIcon`这两个类来支持系统托盘的实现。`SystemTray`类代表系统的托盘区域,而`TrayIcon`类则用于表示托盘中的图标以及与其相关的操作和事件...

    file:///E:/Users/Administrator/Documents/Java实现托盘管理.docx

    首先,要使用Java实现系统托盘,必须确保当前操作系统支持这个特性。这可以通过调用`SystemTray.isSupported()`方法来检查。如果返回`true`,则表示系统支持系统托盘。 接下来,获取系统的托盘实例,这可以通过`...

    java系统托盘实现缩小在开始菜单右下角的功能

    要实现这个功能,你需要使用Java的`java.awt.TrayIcon`类,这是Java Swing库的一部分,它提供了将图标添加到系统托盘的能力。以下是一个简单的步骤和知识点概述: 1. **检查系统支持**: 在使用`TrayIcon`之前,你...

    一个完整系统托盘(java)

    本资源提供了一个完整的Java系统托盘实现的源代码,可以帮助开发者学习如何在Java应用中集成系统托盘功能。 系统托盘在Java中是通过`java.awt.TrayIcon`类来实现的,该类是在Java 6中引入的。以下是对这个知识点的...

    java实现托盘、气泡程序源码

    这个"java实现托盘、气泡程序源码"是一个实用的示例,可以帮助开发者了解如何在Java应用程序中实现这样的功能。 首先,让我们详细了解一下Java中的系统托盘和气泡提示的实现原理: 1. **系统托盘(System Tray)**...

    java创建系统托盘实现(swt和jdk6分别实现)

    在Java编程中,有时我们需要创建一个系统托盘图标来提供应用程序的后台运行和快速访问功能。本主题将探讨如何在SWT(Standard Widget Toolkit)和JDK 6中实现这一功能。 首先,让我们从SWT(Standard Widget ...

Global site tag (gtag.js) - Google Analytics