java程序加到系统托盘的方法
package swingtest; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.Random; public class MainFrame extends JFrame implements ActionListener { private static final long serialVersionUID = -7078030311369039390L;
private JMenu menu;
private JMenuBar jmenuBar;
private String[] jmItemName = {"置于托盘", "系统退出"}; private MainFrame() throws UnsupportedEncodingException {
super("电话薄");
init();
this.setSize(500, 400);
this.setJMenuBar(jmenuBar);
this.setLocationRelativeTo(null); JButton jbutton = new JButton("test");
add(jbutton); systemTray(jbutton); //系统托盘
} /**
* 初始化界面
*/
private void init() {
menu = new JMenu("系统窗体");
for (String s : jmItemName) {
JMenuItem menuItem = new JMenuItem(s);
menuItem.addActionListener(this);
menu.add(menuItem);
}
this.jmenuBar = new JMenuBar();
this.jmenuBar.add(menu);
} @Override
public void actionPerformed(ActionEvent e) {
String actions = e.getActionCommand();
if ("置于托盘".equals(actions)) {
this.setVisible(false);
}
if ("系统退出".equals(actions)) {
System.exit(0);
} } /**
* 系统托盘图标处理.
*
* @param jbutton
*/
private void systemTray(JButton jbutton) throws UnsupportedEncodingException {
if (SystemTray.isSupported()) { //判断系统是否支持托盘功能.
// URL resource = this.getClass().getResource("car.jpg"); //获得图片路径 URL resource = getClass().getClassLoader().getResource("car.jpg");
// File targetFile = new File("files/8k.wav"); // ClassPathResource classPathResource = new ClassPathResource("static/something.txt");
//
// InputStream inputStream = classPathResource.getInputStream();
ImageIcon icon = new ImageIcon(resource); //创建图片对象
JPopupMenu popupMenu = new JPopupMenu(); //创建弹出菜单对象
JMenuItem itemExit = new JMenuItem("退出系统"); //创建弹出菜单中的退出项
JMenuItem itemShow = new JMenuItem("显示窗体"); //创建弹出菜单中的显示主窗体项. popupMenu.add(itemExit);
popupMenu.add(itemShow);
TrayIcon trayIcon = new TrayIcon(icon.getImage(), "电话薄系统");
SystemTray sysTray = SystemTray.getSystemTray(); try {
sysTray.add(trayIcon);
} catch (AWTException ignored) {
}
trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
popupMenu.setLocation(e.getX(), e.getY());
popupMenu.setInvoker(popupMenu);
popupMenu.setVisible(true);
}
}
});
//给窗体最小化添加事件监听.
itemShow.addActionListener(e -> {
setVisible(true); });
//给退出像添加事件监听
itemExit.addActionListener(e -> {
// System.exit(0);
sysTray.remove(trayIcon);
dispose();
});
int count = 0;
jbutton.addActionListener(e -> {
TrayIcon trayIcon4 = new TrayIcon(icon.getImage(), "电话薄系统");
try {
sysTray.add(trayIcon4);
} catch (AWTException ex) {
ex.printStackTrace();
}
}); }
} /**
* 主方法
*
* @param args sdf
*/
public static void main(String[] args) throws UnsupportedEncodingException {
new MainFrame().setVisible(true);
}
}
java程序加到系统托盘的方法的更多相关文章
- 使用apache daemon让java程序在unix系统上以服务方式运行
通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...
- java程序在windows系统作为服务程序运行
Java程序很多情况下是作为服务程序运行的,在Un*x 平台下可以利用在命令后加“&”把程序作为后台服务运行,但在Windows下看作那个Console窗口在桌面上,你是否一直担心别的同时把你 ...
- 解决 Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文标点输入无效的方法
Mac OS X 下基于 Java 的程序(如 IntelliJ IDEA.jEdit 等)会出现中文标点输入无效的问题,在中文输入法状态,可以输入中文字,但输入中文标点最后上去的是英文标点.查阅了相 ...
- 服务器CPU又爆了?Linux快速排查Java程序占用CPU很高的方法
这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的. 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 1.场 ...
- Java程序中调用Python脚本的方法
在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...
- java程序引用别的jar包打包方法
参考文章:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 目前亲测:eclipse打包: 1.不需要手动写mainfest.inf 先利用ecl ...
- 学习Java AES加解密字符串和文件方法,然后写个简单工具类
Reference Core Java Volume Ⅱ 10th Edition 1 对称加密 "Java密码扩展"包含了一个Cipher,它是所有密码算法的超类.通过getIn ...
- 性能分析-java程序篇之案例-工具和方法
1. 背景说明 线上服务响应时间超过40秒,登录服务器发现cpu将近100%了(如下图),针对此问题,本文说明排查过程.工具以定位具体的原因. 2. 分析排查过程 此类问题的排查,有两款神器可用,分别 ...
- Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容
F:\\Demo.properties 文件内容: #\u65B0\u589E\u4FE1\u606F#Wed Sep 14 11:16:24 CST 2016province=广东tt=近蛋city ...
随机推荐
- CF892E Envy[最小生成树]
题意:有一张 $n$ 个点$ m $条边的连通图.有$Q$ 次询问.每次询问给出 $k[i]$ 条边,问这些边能否同时出现在一棵最小生成树上.$n,m,Q,\sum k\le 500000$. 这题利 ...
- 基于Kibana的可视化监控报警插件sentinl入门
sentinl是什么 Kibi/Kibana Alert & Reporting App Watching your data, 24/7/365 sentinl是一个免费的kibana预警与 ...
- TXNLP 20-33
文本处理的流程 # encoding=utf-8 import jieba import warnings # 基于jieba的分词 seg_list = jieba.cut("贪心学院专注 ...
- 【Weblogic】-weblogic查看版本及升级
一.查看weblogic版本 1. cd /weblogic/bea/wlserver_10.3/server/lib 2. java -cp weblogic.jar weblogic.versio ...
- iis与编辑
hostname:域名initializationPage:对应域名下任意可访问action
- 钉钉报警-prometheus-alertmanager
alertmanager alertmanager可以放在远程服务器上 报警机制 在 prometheus 中定义你的监控规则,即配置一个触发器,某个值超过了设置的阈值就触发告警, prometheu ...
- asp.net上传超大文件解决方案
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- NOI2007 项链工厂
题目链接:戳我 60pts 有一点容易写错的小细节: 比如说求全局的段数的时候,如果只有一种颜色,那么当左右端点相等时,就不要ans--了. 注意右端点小于左端点的情况. #include<io ...
- String,权限修饰符,方法,集合
String String str1 = "dashu"; String str2 = "dashu"; String string = new String( ...
- Redis 4.x 5.x 未授权访问
环境搭建 5.0版本下载 wget http://download.redis.io/releases/redis-5.0.5.tar.gz tar xzf redis-5.0.0.tar.gz cd ...