直接上方法,

不过有些问题要注意,最后会说明!

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 托盘的更多相关文章

  1. Java Swing 托盘闪烁Demo实例

    桌面程序当中,托盘显示是一个常用的功能. C#的WinForm程序要实现托盘是挺轻松的,而Java Swing要实现这个功能虽然也不难, 但是由于Java Swing开发者或许没有C#多,所以看到很多 ...

  2. Swing实现系统托盘

    /* 实现系统托盘化 */ protected void setToolSystemTray() { // 系统是否支持系统托盘 if (SystemTray.isSupported()) { // ...

  3. 用swing也可以做出好看的界面

    用Swing做出的例子:JavaFX做出的界面:后来又做出了自己编写的一套基于Synth的L&F,其与直接在代码中重绘某个组件不同,最大优点是具有可插拔性,即在不改变原有程序代码的情况下,用户 ...

  4. Swing 窗口的最小化到系统图标与还原

    2014年2月26日 13:01:47 一个上午的功夫,终于折腾好了. 上午主要是卡在监听事件的参数问题.当时脑子不好使,忘记事件是自己构造的,傻傻的测试了半天,如何传递窗口的参数 等中午解决的时候, ...

  5. Java应用程序使用系统托盘资源

    要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1.线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2.获得一个Syste ...

  6. java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码

    java swing MenuItem乱码 2016年12月30日 13:32:08751人阅读 评论(0) 收藏 举报   用java开发一个带有托盘图标的程序, 其它模块的中文显示都是正常的,比如 ...

  7. Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现

    Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现 1. 建立悬浮窗口引用代码 1 1.1. 定义悬浮窗口,设置this主窗口引用,是为了在悬浮窗口中 ...

  8. 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 ...

  9. Java Swing 图形界面开发(目录)

    Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...

随机推荐

  1. 机器学习技法笔记:02 Dual Support Vector Machine、KKT

    原文地址:https://www.jianshu.com/p/58259cdde0e1 Roadmap Motivation of Dual SVM Lagrange Dual SVM Solving ...

  2. 【react】---Hooks的基本使用---【巷子】

    一.react-hooks概念 React中一切皆为组件,React中组件分为类组件和函数组件,在React中如果需要记录一个组件的状态的时候,那么这个组件必须是类组件.那么能否让函数组件拥有类组件的 ...

  3. 【转载】Spring 源码分析之 bean 实例化原理

    本次主要想写spring bean的实例化相关的内容.创建spring bean 实例是spring bean 生命周期的第一阶段.bean 的生命周期主要有如下几个步骤: 创建bean的实例 给实例 ...

  4. hdu6537 /// DP 最长不降子序列->最长公共子序列

    题目大意: 给定一个字符串 字符为0~9 求翻转某个区间后使得串中的最长不降子序列最长 因为字符范围为0~9 假设有一个 0 1 2 3 4 5 6 7 8 9 的序列 此时翻转某个区间得到形如 0 ...

  5. Ansible-随笔-7

    扩展Ansible的插件系统. 有的时候,如果Ansible内置的插件无法满足需求时,我们可以自己编写新插件. 以下情况下可以考虑开发新插件: 1.除Paramiko.本机SSH.Local.Winr ...

  6. React 生命周期 16.0以下

    虽然有人画过了  但是自己画一下也能加深记忆吧

  7. Python 文件名

  8. ubuntu系统设置密码报错 Module is unknown

    修改账户密码报错 # passwd 报错信息 passwd: Module is unknown passwd: password unchanged   修改配置文件 # cd /etc/pam.d ...

  9. 微信小程序之自定义组件

    在微信小程序项目中 肯定会存在很多功能和样式上相似的部分 面对这种情况 只是单单的ctrl+c ctrl+v 就显得很low了,而且也不便于后期维护那么这时候 使用微信小程序中的自定义组件功能就很合适 ...

  10. QueryList 内容过滤

    <?php require 'vendor/autoload.php'; use QL\QueryList; $html =<<<STR <div id="de ...