模仿Teamcenter(UIHealthDetector) 实现 系统托盘

news/2025/9/27 9:19:39/文章来源:https://www.cnblogs.com/paylove/p/19114746

模仿Teamcenter(UIHealthDetector) 实现

  • 包位置: com.teamcenter.rac.common.health.UIHealthDetector (com.teamcenter.rac.common_xxxx.jar)
  • 环境:eclipse4.15 + java 8 + windowbuilder

项目结构

image

项目主要代码

package com.tray.test;
import java.io.IOException;
import java.io.InputStream;import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;public class SystemTrayExample {public static void main(String[] args) throws IOException {Display display = new Display();Shell shell = new Shell(display);shell.setText("系统托盘示例");shell.setSize(300, 200);// 获取系统托盘Tray tray = display.getSystemTray();if (tray == null) {System.out.println("当前系统不支持系统托盘");return;}// 创建托盘项TrayItem trayItem = new TrayItem(tray, SWT.NONE);// 设置托盘图标(需要替换为实际的图标路径)InputStream iconIs =SystemTrayExample.class.getResourceAsStream("icon.png");Image icon = new Image(display, iconIs);iconIs.close();trayItem.setImage(icon);// 设置提示文本(鼠标悬停时显示)trayItem.setToolTipText("我的应用程序");// 创建右键菜单Menu menu = new Menu(shell, SWT.POP_UP);// 添加菜单项目MenuItem showItem = new MenuItem(menu, SWT.PUSH);showItem.setText("显示窗口");showItem.addListener(SWT.Selection, e -> {shell.setVisible(true);shell.setActive();});MenuItem exitItem = new MenuItem(menu, SWT.PUSH);exitItem.setText("退出");exitItem.addListener(SWT.Selection, e -> {icon.dispose();shell.dispose();display.dispose();});// 为托盘项添加鼠标事件,在右键点击时显示菜单trayItem.addListener(SWT.MenuDetect, e->{menu.setLocation(display.getCursorLocation());menu.setVisible(true);});// 添加托盘项点击事件(双击显示窗口)      trayItem.addListener(SWT.DefaultSelection, e -> {shell.setVisible(true);shell.setActive();});// 窗口关闭时最小化到托盘而不是退出shell.addListener(SWT.Close, e -> {e.doit = false; // 取消默认关闭行为shell.setVisible(false);});shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}icon.dispose();display.dispose();}
}

效果

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个纯净的自动微分框架—autograd

本文介绍了一个可以基于CPU和numpy的自动微分计算框架。如果只是需要使用自动微分计算的功能,就可以直接在CPU环境下简便的部署,快捷的完成环境搭建。技术背景 自动微分是一个在深度学习等计算领域非常常用的一个工具…

商城网站建设论文如何用2级域名做网站

简单来说,就是接受前端微信小程序发来的数据保存到数据库,这是我写的第二个接口,相比前一个要稍微简单一些,而且因为前端页面也是我写的,参数类型自然是无缝对接_ 前端页面大概长这个样子 先用apifox模拟发送请求测试…

PHP 8.2 vs PHP 8.3 对比:新功能、性能提升和迁移技巧

PHP 8.2 vs PHP 8.3 对比:新功能、性能提升和迁移技巧 个人目前正在使用 8.2,官方其实在去年也停止维护了。为什么还在使用,就是因为 PHP 社区生态还没完全跟上。但是 PHP 一直在快速演进,PHP 8.3 发布后又带来了不…

安徽网站建设的基本步骤wordpress微信绑定域名

往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言中函数指针,指针函数和函数指针之间的区别。c语言指针函数定义:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变…

医院 网站源码腾讯云服务器优惠

mplab ide中使用c语言编程,PIC单片机的C语言使用——在MPLAB-IDE中使用HitechC编译器.doc...-CSDN博客

使用油猴脚本去除浏览器搜索的URL后缀,减少广告

使用油猴脚本去除浏览器搜索的URL后缀,减少广告今天碰到了一件事,我在浏览器里搜索"adobe",它显示的URL是“https://www.bing.com/search?q=adobe&qs=n&form=QBRE&sp=-1&lq=0&pq=ado…

浅谈并分享一种较为高效的学习方法

浅谈并分享一种较为高效的学习方法,适用于一般大学内较为吃力的朋友、阅读书籍、学习专业课程、自学内容等普通群体,可能对于迷茫考入一般大学的朋友有较好帮助,学神不喜请绕道。 若本文对你有所帮助,那我编写发布…

深入解析:PyTorch张量切片的陷阱:视图与副本

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

英语_阅读_Industry 4.0_待读

“Industry 4.0” is a mix of low-cost and high-power computers, high-speed communication and artificial intelligence. “工业4.0”是低成本高性能计算机、高速通信和人工智能的结合。 This will produce smart…

站酷网官网登录营销方案模板范文

在当今高度发达的制造业中,精密机械零件加工企业扮演着至关重要的角色,以其精湛的工艺和严谨的态度,为制造业的各个领域提供着关键的支撑。 一、高精度制造,奠定产品质量基础 精密机械零件加工企业以其精湛的加工技术,…

Python获取CPU和内存使用率

首先,确保已安装psutil库。如果尚未安装,请运行以下命令进行安装: pip install psutil 安装完成后,我们就可以使用psutil库来测量CPU和内存使用率了。以下是一个简单的示例代码: import psutil import timedef ge…

解决Python requests库POST请求参数顺序问题

在Python的世界里,用requests库发个POST请求也一样,有时候你得确保参数的顺序得守规矩,不然服务器可能理你都不理。那怎么保持POST请求参数的顺序呢?咱们得换个法子:用 collections.OrderedDict来拯救世界。 Orde…

使用Tabs选项卡组件快速搭建鸿蒙APP框架

ArkUI提供了很多布局组件,其中Tabs选项卡组件可以用于快速搭建鸿蒙APP框架,本文通过案例研究Tabs构建鸿蒙原生应用框架的方法和步骤。大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目…

深入解析:实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——从注册到调用的核心架构与基础实现

深入解析:实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——从注册到调用的核心架构与基础实现pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

完整教程:从另一个视角看Transformer:注意力机制就是可微分的k-NN算法

完整教程:从另一个视角看Transformer:注意力机制就是可微分的k-NN算法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: …

哈尔滨电子网站建设个人建网站一般多少钱?

一、自动化测试基本介绍 1 自动化测试概述: 什么是自动化测试?一般说来所有能替代人工测试的方式都属于自动化测试,即通过工具和脚本来模拟人执行用例的过程。 2 自动化测试的作用 减少软件测试时间与成本改进软件质量通过扩大测试覆盖率…

ACM 杂题选做 题解合集

太困难QOJ #7509 01 Tree 翻转深度为奇数的点的颜色,将操作变为交换相邻的 \(\tt 0\) 点和 \(\tt 1\) 点。 对于每条边考虑,其施加操作的次数为 \(s\) 与 \(t\) 在其子树中 \(\tt 1\) 的个数差的绝对值。 所以对于串…

| 和 || 的区别详解及应用场景对比

|与||的区别 在众多编程语言中,|与||代表了不同的运算。其中|是按位或运算,||是逻辑或运算。 从字面意思来理解,|常可以用于具体数值的计算,结果为数值,而||是用来逻辑运算的,结果只有False或者True。例如: int…

准备建网站该怎么做网站改版对优化的影响

buffer busy waitshttp://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_idNOT&p_id34405.1当会话想要访问缓冲存储器中的数据块,而该数据块正在被其它会话使用时产生buffer busywaits事件。其它会话可能正在从数据文件向缓冲区存…

网站分成推广怎么做西部数码wordpress

我有一个带有OAuth2授权和资源服务器的spring boot设置.用户可以通过向/ oauth / token发出POST请求来获取令牌.到现在为止还挺好.但是,我不想通过BASIC auth保护/ oauth / token,而是通过自定义安全过滤器.我尝试了以下内容,但从未调用过DemoAuthenticationFilter:…