ava SystemTray类(系统托盘)和TrayIcon类(托盘图标)

利用SystemTray类可以访问系统托盘,每个Java应用程序在运行时都会被分配一个该类的实例,可以通过该类的静态方法getSystemTray()获得。某些系统可能不支持系统托盘功能,此时可以通过静态方法isSupported()判断当前系统是否支持该功能,如果支持则返回true,否则返回false。

通过方法add(TrayIcon trayIcon)可以为当前应用程序添加托盘图标到系统托盘;可以为一个应用程序添加多个托盘图标;当不再需要托盘图标时,可以通过方法remove(TrayIcon trayIcon)移除指定的托盘图标。

每一个Java应用都会包含一个SystemTray实例,这个不需要你去实例化。

SystemTray.isSupported();// 判断当前平台是否支持系统托盘
SystemTray tray = SystemTray.getSystemTray();// 获取到当前平台的系统托盘

TrayIcon 类的构造方法
TrayIcon trayIcon = new TrayIcon(Image image);//创建只具有托盘图标的对象
TrayIcon trayIcon = new TrayIcon(Image image, String tooltip,);//创建具有托盘图标和提示信息的对象
TrayIcon trayIcon = new TrayIcon(Image image, String tooltip, PopupMenu popup);//创建具有托盘图标、提示信息、弹出菜单的对象(注意:是 PopupMenu 类 弹出菜单,不是 JPopupMenu 类 )

TrayIcon 类的常用方法
setImageAutoSize(true);// 设置自动调整图标大小以适应当前平台的托盘图标显示

setImage(Image image);// 根据需要可在随时改变显示的图标

setPopupMenu(PopupMenu popup);// 根据需要可随时改变点击时的弹出菜单

addActionListener(ActionListener listener);// 添加托盘图标的动作监听器(鼠标右键的点击监听)

addMouseListener(MouseListener listener);// 添加托盘图标的鼠标监听器(包括鼠标所有按键的监听)

add(trayIcon);// 添加托盘图标到系统托盘(一个应用程序可添加多个托盘图标)

remove(trayIcon);// 从系统托盘移除图标

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import java.net.*;
import javax.swing.*;

public class t3 extends JFrame{

    public t3() {
        setTitle("选项卡面板");
        setBounds(400, 400, 400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JLabel label = new JLabel();
        label.setForeground(Color.black);//设置标签前景色
        label.setFont(new Font("微软雅黑", Font.BOLD, 16));//设置标签字体,大小,加粗
        label.setHorizontalAlignment(SwingConstants.CENTER);//设置标签内容居中对齐
        label.setText("请查看系统托盘中的变化!");

        add(label);

        setVisible(true);
    }

    public void Tray() throws AWTException{

        if(SystemTray.isSupported()) {//判断系统是否支持托盘图标

            URL resource = this.getClass().getResource("/black.jpg");//获取托盘图标
            ImageIcon icon = new ImageIcon(resource);
            PopupMenu pop = new PopupMenu();//创建弹出式菜单

            MenuItem menu = new MenuItem("退出");//创建菜单项
            menu.addActionListener(new ActionListener() {//给菜单项添加事件监听器,单击时退出系统

                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);

                }
            });
            pop.add(menu);
            TrayIcon tray = new TrayIcon(icon.getImage(), "Hern",pop);

            // 获得系统托盘对象
            SystemTray systemTray = SystemTray.getSystemTray();
            systemTray.add(tray);// 将托盘图片添加到系统托盘中
        }

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        t3 test = new t3();

        try {

            test.Tray();

        }catch(AWTException e) {
            e.printStackTrace();
        }

    }

}

原文地址:https://www.cnblogs.com/BelieveFish/p/10255300.html

时间: 2024-10-30 14:11:19

ava SystemTray类(系统托盘)和TrayIcon类(托盘图标)的相关文章

ExtJS 4 类系统

ExtJS 4的类系统(class system)进行了一次重大重构,ExtJS4的新架构就是基于这套新的类系统构建的,因此有必要先了解以下这个class system这篇文章分为四章 I: "Overview" 解释健壮类系统的重要性 II: "Naming Conventions" 最佳命名规范实践(其实是要求必须遵照它的规范) III: "Hands-on" 详细的例子 IV: "Errors Handling & Deb

【Install】我是如何安装Linux类系统的

安装系统:ubuntu12.04 i386 DVD U盘启动12.04live系统 连线,设置连接 安装系统到硬盘 "语言支持",更新 安装gnome经典界面 sudo apt-get install gnome-shell gnome-tweak-tool gnome-panel 关闭unity的全局菜单 sudo apt-get   autoremove  indicator-appmenu   appmenu-gtk   appmenu-gtk3   appmenu-qt 让窗口

[转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件

原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件 折腾: C#中如何在右下角添加提示窗口,用于显示打开文件和文件夹 的过程中,需要实现,点击对应LinkLabel后,调用资源管理器,打开对应的文件夹. [

如何使用android系统隐藏hide的类和方法

如何使用android系统隐藏hide的类和方法 欢迎访问 wxtlife.com 在应用开发过程中,可能会需要使用到系统的方法,比如:SystemProperties 以及系统隐藏hide的方法和类,比如:Android 4.2中的 Surface.screenshot(x,y)方法是隐藏的, Android 4.3后面上面的那个方法变成了SurfaceControl.screenshot(x,y) 并且SurfaceControl这个类也变成了隐藏的了.那么要直接在eclipse或者andr

[ExtJS学习笔记]第六节 Extjs的类系统Class System命名规则及定义和调试

本文地址: http://blog.csdn.net/sushengmiyan/article/details/38479079 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站:    http:

phpcms加载系统类与加载应用类之区别详解

<?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms/libs/classes/文件夹下参数说明:@param string $classname 类名@param string $path 扩展地址@param intger $initialize 是否初始化 例子:如要调用系统Form类的生成验证码函数:checkcode() ,看下面例子pc_base:

如何调用系统隐藏的API,或者使用系统未开放的类

一.反射 可以通过反射来调用系统隐藏的API, 但对于已经被系统隐藏的类似乎不太行得通. 二.使用系统源码编译后的classes.jar 路径:out/target/common/obj/JAVA_LIBRARIES/framework_intermediates 将此jar包添加到项目中后,在使用系统相关类或者隐藏的API时,就不会出现错误标识的小红点提示. 需要注意的是: 1,在manifest中标识:android:sharedUserId="android.uid.system"

Debian类系统必做——将【你的用户】加入sudoers用户组

切换到root:su root 修改sudoers nano /etc/sudoers 在root    ALL=(ALL:ALL) ALL下,加入:liz        ALL=(ALL:ALL) ALL Debian类系统必做--将[你的用户]加入sudoers用户组

php7中系统自带异常类和自己创建异常类比较

php7中系统自带异常类和自己创建异常类 1,系统自带异常类 try catch<?phptry{throw new Exception('96net.com.cn',10);}catch(Exception $e){echo $e->getMessage();echo $e->getCode();} 2,自己创建异常类 <?phpclass MyException extends Exception{function demo(){echo "dc3688.com&qu