swing 托盘
直接上方法,
不过有些问题要注意,最后会说明!
private void systemTray() {
if (SystemTray.isSupported()) { // 判断系统是否支持托盘功能.
// 创建托盘右击弹出菜单
PopupMenu popupMenu = new PopupMenu();
//创建弹出菜单中的退出项
MenuItem itemExit = new MenuItem("Exit");
itemExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popupMenu.add(itemExit);
//创建托盘图标
ImageIcon icon = new ImageIcon(getClass().getResource("image/timg.jpg"));
// 创建图片对象
TrayIcon trayIcon = new TrayIcon(icon.getImage(), "Scan Upload",
popupMenu);
//这句话很重要,不然托盘图标不显示!!!
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TwainADF_VerificationForm.this.setVisible(true);
}
});
//把托盘图标添加到系统托盘
//这个可以点击关闭之后再放到托盘里面,在此是打开程序直接显示托盘图标了
try {
SystemTray.getSystemTray().add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
}
}
JDialog 取消右上角关闭事件
this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
PS:
1 图片显示空白
trayIcon.setImageAutoSize(true);这句话必须要要
2 图片存放路径问题:
在这个类的同级,创建image文件夹,图片塞进去。
然后复制到 target目录,一样复制一份到同样的类的同级
3 取消和隐藏JDialog关闭按钮
方法1, 禁用关闭
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
方法2, 隐藏
dialog.setUndecorated(true);
4 托盘图片切换
PopupMenu popupMenu = new PopupMenu();
//默认/选中 字体
Font defaultFont=new Font("宋体", Font.PLAIN,12);
Font selectFont=new Font("宋体", Font.BOLD,20);
MenuItem itemSimple = new MenuItem("Simple");
MenuItem itemMulti = new MenuItem("Multi");
MenuItem itemExit = new MenuItem("Exit"); //单个打印菜单
itemSimple.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AppConfig.uploadFileType=1;
//改变字体
Font fontSimple=new Font("宋体", Font.BOLD,20);
itemSimple.setFont(selectFont);
itemMulti.setFont(defaultFont);
//改变托盘图标
trayIcon.setImage(new ImageIcon(getClass().getResource("image/image-regular.png")).getImage());
}
});
popupMenu.add(itemSimple); //多个打印菜单
itemMulti.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AppConfig.uploadFileType=2;
//改变字体
Font fontMulti=new Font("宋体", Font.BOLD,20);
itemMulti.setFont(selectFont);
itemSimple.setFont(defaultFont);
//改变托盘图标
trayIcon.setImage(new ImageIcon(getClass().getResource("image/images-regular.png")).getImage());
}
});
popupMenu.add(itemMulti);
swing 托盘的更多相关文章
- Java Swing 托盘闪烁Demo实例
桌面程序当中,托盘显示是一个常用的功能. C#的WinForm程序要实现托盘是挺轻松的,而Java Swing要实现这个功能虽然也不难, 但是由于Java Swing开发者或许没有C#多,所以看到很多 ...
- Swing实现系统托盘
/* 实现系统托盘化 */ protected void setToolSystemTray() { // 系统是否支持系统托盘 if (SystemTray.isSupported()) { // ...
- 用swing也可以做出好看的界面
用Swing做出的例子:JavaFX做出的界面:后来又做出了自己编写的一套基于Synth的L&F,其与直接在代码中重绘某个组件不同,最大优点是具有可插拔性,即在不改变原有程序代码的情况下,用户 ...
- Swing 窗口的最小化到系统图标与还原
2014年2月26日 13:01:47 一个上午的功夫,终于折腾好了. 上午主要是卡在监听事件的参数问题.当时脑子不好使,忘记事件是自己构造的,傻傻的测试了半天,如何传递窗口的参数 等中午解决的时候, ...
- Java应用程序使用系统托盘资源
要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1.线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2.获得一个Syste ...
- java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码
java swing MenuItem乱码 2016年12月30日 13:32:08751人阅读 评论(0) 收藏 举报 用java开发一个带有托盘图标的程序, 其它模块的中文显示都是正常的,比如 ...
- Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现
Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现 1. 建立悬浮窗口引用代码 1 1.1. 定义悬浮窗口,设置this主窗口引用,是为了在悬浮窗口中 ...
- atitit.系统托盘图标的设计java swing c# .net c++ js
atitit.系统托盘图标的实现java swing c# .net c++ js 1. 系统托盘图标的结构 1 2. Java swing的实现 1 3. .net的实现 1 4. C++的实现 1 ...
- Java Swing 图形界面开发(目录)
Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...
随机推荐
- HDU 6697 Closest Pair of Segments (计算几何 暴力)
2019 杭电多校 10 1007 题目链接:HDU 6697 比赛链接:2019 Multi-University Training Contest 10 Problem Description T ...
- ICPC Asia Nanning 2017 L. Twice Equation (规律 高精度运算)
题目链接:Twice Equation 比赛链接:ICPC Asia Nanning 2017 Description For given \(L\), find the smallest \(n\) ...
- 【Java多线程系列四】控制线程执行顺序
假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatc ...
- 获取hdfs集群信息(fs.defaultFS)
[root@hive-dp-7bd6fd4d55-wctjn hive-1.1.0-cdh5.14.0]# hdfs getconf -confKey fs.default.name19/12/04 ...
- 020_JUC
JUC Java.util.Concurrent 并发包 池的顶级接口 Executor 子接口 ExecutorService 工具类 Executors(Collections.Arrays .. ...
- Chrome调试小技巧
前言: 除了我们日常使用的调试方法,在Chrome中,其含有一些有意思的方法,有助于提高我们的开发调试效率. Sources页 command + p 文件跳转 使用Sublime的人或习惯用comm ...
- NIO 源码分析(04) 从 SelectorProvider 看 JDK SPI 机制
目录 一.SelectorProvider SPI 二.SelectorProvider 加载过程 2.1 SelectorProvider 加载 2.2 Windows 下 DefaultSelec ...
- NIO 源码分析(02-1) BIO 源码分析
目录 一.BIO 最简使用姿势 二.ServerSocket 源码分析 2.1 相关类图 2.2 主要属性 2.3 构造函数 2.4 bind 方法 2.5 accept 方法 2.6 总结 NIO ...
- 并发新构件之PriorityBlockingQueue:优先阻塞队列
PriorityBlockingQueue:优先阻塞队列:是带有优先级的阻塞队列,一个无界阻塞队列,它使用与类 PriorityQueue 相同的顺序规则,并且提供了阻塞获取操作.虽然此队列逻辑上是无 ...
- lambda和DynamoDB连接
在DynamoDB当作创建一个新表,然后在项目当中创建,把string value的值填写一下. 在IAM创建角色附加 AWSLambdaDynamoDBExecutionRole权限 在lambda ...