java win10 通知,如何使用Java AWT创建和显示Windows 10通知

在Java中, 如何生成不同类型的通知或警报非常令人困惑。一些开发人员更喜欢使用JOptionPane, 但是当你在固定环境中工作时(例如在Windows 10中), 使用Windows的默认通知样式非常好, 因此这就是为什么我们向你展示一个简短的摘要来显示Java AWT轻松实现Windows 10通知。

以下代码在系统托盘中生成所需的通知, 因此你可以简单地为其创建一个方法, 将其包装在代码中, 或者仅更改警报的文本即可:

import java.awt.*;

import java.awt.event.*;

import java.awt.TrayIcon.MessageType;

import java.net.MalformedURLException;

try{

//Obtain only one instance of the SystemTray object

SystemTray tray = SystemTray.getSystemTray();

// If you want to create an icon in the system tray to preview

Image image = Toolkit.getDefaultToolkit().createImage("some-icon.png");

//Alternative (if the icon is on the classpath):

//Image image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("icon.png"));

TrayIcon trayIcon = new TrayIcon(image, "Java AWT Tray Demo");

//Let the system resize the image if needed

trayIcon.setImageAutoSize(true);

//Set tooltip text for the tray icon

trayIcon.setToolTip("System tray icon demo");

tray.add(trayIcon);

// Display info notification:

trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.INFO);

// Error:

// trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.ERROR);

// Warning:

// trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.WARNING);

}catch(Exception ex){

System.err.print(ex);

}

请注意, 代码的执行需要通过Try-Catch语句完成, 该语句可以捕获代码抛出的2个异常(AWTException, MalformedURLException)或常规异常(如上所示)。

结构化的例子

下面的示例显示了一个非常简单的应用程序类, 该类在Frame中绘制了一个简单的按钮。单击该按钮时, 将出现一个托盘通知:

package sandbox;

import java.awt.*;

import java.awt.event.*;

import java.awt.TrayIcon.MessageType;

import java.net.MalformedURLException;

public class Sandbox {

/**

* Parsing a JSONObject string

*

* @param args

*/

public static void main(String[] args) {

Sandbox app = new Sandbox();

}

public Sandbox(){

Frame f = new Frame("Button Example");

Button btn = new Button("Click Here");

btn.setBounds(50, 100, 80, 30);

f.add(btn);

f.setSize(400, 400);

f.setLayout(null);

f.setVisible(true);

Sandbox _this = this;

btn.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

if (SystemTray.isSupported()) {

try{

_this.displayTray();

}catch(AWTException ex){

}catch(MalformedURLException ex){

}

} else {

System.err.println("System tray not supported!");

}

}

});

}

public void displayTray() throws AWTException, MalformedURLException {

//Obtain only one instance of the SystemTray object

SystemTray tray = SystemTray.getSystemTray();

//If the icon is a file

Image image = Toolkit.getDefaultToolkit().createImage("icon.png");

//Alternative (if the icon is on the classpath):

//Image image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("icon.png"));

TrayIcon trayIcon = new TrayIcon(image, "Java AWT Tray Demo");

//Let the system resize the image if needed

trayIcon.setImageAutoSize(true);

//Set tooltip text for the tray icon

trayIcon.setToolTip("System tray icon demo");

tray.add(trayIcon);

trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.INFO);

}

}

前面的代码将生成以下框架并显示通知:

56788e72e3e0b89063f99bf119289250.png

编码愉快!

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

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

相关文章

matlab枚举类型,在 Simulink 模型中使用枚举数据

计算中的枚举值按照设计,Simulink 不允许在数学计算中将枚举值作为数值使用,即使枚举类是 MATLAB int32 类的子类也是如此。因此,尽管枚举类型存在基础整数,也不能作为数值类型使用。例如,您不能直接为 Gain 模块输入枚…

dataguard mysql,[dataguard同步数据库]Dataguard环境下数据库的备份与恢复

在线QQ客服:1922638专业的SQL Server、MySQL数据库同步软件在部署完active data guard后,不但可以将只读的查询交给备库执行,还可以把日常的数据库备份工作放在备库上执行,从而减轻主库的压力,充分的发挥服务器资源&am…

php getimagecompose,Docker进阶:Dockerfile以及docker-compose工具

Dockerfile:用来定制镜像的文件Docker-compose:用来部署容器集群的命令工具Dockerfile基本语法FROM:指定基础镜像,格式一般是FROM :FROM必须是Dockerfile的第一条非注释的命令是镜像名,是指定版本,不写的话…

Redis的安装以及使用

第一步,去官网下载一个压缩包到本地解压即用,绿色软件,不用其他操作,点击Download下载即可: Introduction to Redis | RedisLearn about the Redis open source projecthttps://redis.io/docs/about/第二步&#xff0…

oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解

行转列一张表查询结果为--行转列select years,(select amount from Tb_Amount as A where month1 and A.yearsTb_Amount.years)as m1,(select amount from Tb_Amount as A where month2 and A.yearsTb_Amount.years)as m2,(select amount from Tb_Amount as A where month3 and…

js十秒没有点击怎么判断_MAC口红怎么判断真假?没批号就没有生产日期,网友:品控太差...

一般来说,MAC的口红产品,底部都会有三位编码,这是该款口红的批号。因像MAC这类国外美妆护肤品牌,是不会将生产日期明确的标注在产品上,都是将其编码成批号,在标注在外包装或者产品的侧面、底部等边缘位置。…

go run main.go 参数_介绍一款Go项目热编译工具gowatch

使用场景在golang项目编写过程中,需要对项目不断的进行构建go build并调试以快速发现问题,而我们每次进行手动的进行go build又太重复,所以写了这么一个工具gowatch来实时的监听文件的改动并编译运行,大大提升开发效率。快速入门安…

安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...

点击上方蓝字关注我们01游戏简介:游戏名称:海贼无双3其它名称:One Piece - Pirate Warriors 3游戏类型:动作游戏开发发行:Omega Force游戏平台:PC整理时间:2020-04-25官方网址:http:…

11210怎么等于24_想要消耗100大卡热量,怎么做才最简单?

减肥,最根本的原理就是制造热量差,从饮食上限制热量的摄入,调理体质让基础代谢更高,运动来进一步增加消耗,当热量差达到7000大卡左右的时候,就能瘦下来1kg的纯脂肪!美食当前,自然要先…

连接linux工具Mtr,Linux常用网络工具:路由扫描之mtr

除了上一篇《Linux常用网络工具:路由扫描之traceroute》介绍的traceroute之外,一般Linux还内置了另一个常用的路由扫描工具mtr。mtr在某些方面比traceroute更好用,它可以实时显示经过的每一跳路由的信息,并不断进行探测。tracerou…

redis rua解决库存问题_【150期】面试官:Redis的各项功能解决了哪些问题?

点击上方“Java面试题精选”,关注公众号面试刷图,查缺补漏>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅阶段汇总集合:一百期面试题汇总先看一下Redis是一个什…

启动盘Linux windows,Linux 中创建 USB 启动盘来拯救 Windows 用户

人们经常要求我帮助他们恢复被锁死或损坏的 Windows 电脑。有时,我可以使用 Linux USB 启动盘来挂载 Windows 分区,然后从损坏的系统中传输和备份文件。有的时候,客户丢失了他们的密码或以其他方式锁死了他们的登录账户凭证。解锁账户的一种方…

linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级

在学习如何开启Ubuntu系统自动升级之前,先解释下为什么需要自动升级。默认情况下,ubuntu每天一次检查更新。但是一周只会弹出一次软件升级提醒,除非当有安全性升级时,才会立即弹出。所以,如果你已经使用Ubuntu一段时间…

做自适应网站专业乐云seo_什么叫网站优化-网站建设-SEO优化

公司致力于企业品牌营销策划、网站建设、网站优化、五网竞价推广、商城建设、小程序开发、搜索引擎推广、SEO及企业品牌整合营销、全网整合营销霸屏推广等专业一站式网络全包服务。为不同企业品牌量身定制合适的设计方案,提供专业一站式网站服务平台、网络广告投放平…

跨域会报40几_关于跨域,以及跨域的几种方式

首先我们来想一想为什么会有跨域这个名词的出现呢?跨域又是什么呢?为何要跨域?浏览器的同源策略又是什么?怎么解决?jsonp又是什么?跨域的原理又是什么呢?名词解释:跨域:浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和…

linux用户的配置文件保存在哪里,使用配置文件(.settings、.config)存储应用程序配置...

引言我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置。这样每次都要建立单独的配置类,并书写读写配置代码,相当麻烦。…

4列变成5列 datatable_云南美食界“5巨头”,谁才是NO.1?你家乡的那道菜也在列...

每个城市都有自己盛产的食材,最终也被制作成几代都传延至今的美食,这便是美食的传承。今天小编就来说说云南美食,下面这云南美食界“5巨头”,谁才是你心里的NO.1?你家乡的那道菜也在列哦~云南大理:白族泥鳅…

linux+基因组字符替换,liftover基因组版本直接的coordinate转换

下载地址:http://hgdownload.cse.ucsc.edu/admin/exe/使用方法:【从hg38转到hg19】因为主流的基因组版本还是hg19,但是时代在进步,已经有很多信息都是以hg38的形式公布出来的了。比如,我下载了pfam.df这个protein domain注释文件,…

elinput内容过长显示悬浮框_excel中一直被忽视的名称框,用好了也能提高效率

在excel左上角功能区下方,有一个名称框(下图红框中的部分)。大部分朋友应该没注意过这个地方有什么作用,或者仅仅知道名称框中会显示单元格的位置,因此在操作中这项功能无法表现出其真正的效果。本文就为大家介绍一下关于名称框的一些实用功能…

同步轨道进入过程_“收官之星”定点成功!北斗三号卫星全部进入长管模式

◎ 徐新芳 科技日报记者 付毅飞6月30日14时15分,北斗三号全球卫星导航系统最后一颗组网卫星成功定点于距离地面约36000公里的地球同步轨道,顺利进入长期运行管理模式。卫星有效载荷已完成开通,经过遥测数据判读,星载基准频率合成器…