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程序加到系统托盘的方法的更多相关文章

  1. 使用apache daemon让java程序在unix系统上以服务方式运行

    通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...

  2. java程序在windows系统作为服务程序运行

    Java程序很多情况下是作为服务程序运行的,在Un*x 平台下可以利用在命令后加“&”把程序作为后台服务运行,但在Windows下看作那个Console窗口在桌面上,你是否一直担心别的同时把你 ...

  3. 解决 Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文标点输入无效的方法

    Mac OS X 下基于 Java 的程序(如 IntelliJ IDEA.jEdit 等)会出现中文标点输入无效的问题,在中文输入法状态,可以输入中文字,但输入中文标点最后上去的是英文标点.查阅了相 ...

  4. 服务器CPU又爆了?Linux快速排查Java程序占用CPU很高的方法

    这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的. 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 1.场 ...

  5. Java程序中调用Python脚本的方法

    在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...

  6. java程序引用别的jar包打包方法

    参考文章:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 目前亲测:eclipse打包: 1.不需要手动写mainfest.inf 先利用ecl ...

  7. 学习Java AES加解密字符串和文件方法,然后写个简单工具类

    Reference Core Java Volume Ⅱ 10th Edition 1 对称加密 "Java密码扩展"包含了一个Cipher,它是所有密码算法的超类.通过getIn ...

  8. 性能分析-java程序篇之案例-工具和方法

    1. 背景说明 线上服务响应时间超过40秒,登录服务器发现cpu将近100%了(如下图),针对此问题,本文说明排查过程.工具以定位具体的原因. 2. 分析排查过程 此类问题的排查,有两款神器可用,分别 ...

  9. Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容

    F:\\Demo.properties 文件内容: #\u65B0\u589E\u4FE1\u606F#Wed Sep 14 11:16:24 CST 2016province=广东tt=近蛋city ...

随机推荐

  1. 使用 Drag and Drop 给Web应用提升交互体验

    什么是 Drag and Drop (拖放)? 简单来说,HTML5 提供了 Drag and Drop API,允许用户用鼠标选中一个可拖动元素,移动鼠标拖放到一个可放置到元素的过程. 我相信每个人 ...

  2. [Spring Boot] Aspect Intro

    Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another ...

  3. vue 手机物理返回键关闭弹框

    1.打开弹窗调用 window.history.pishState() 函数 2.关闭弹框 3.mounted 生命周期 监听popstate 事件 4.beforeDestroy 生命周期 移除po ...

  4. mysql清表时有外键关联处理办法

    可以忽视关联的情况下: 先取消主外键关系验证:SET FOREIGN_KEY_CHECKS = 0; 然后删除需要删除的数据:truncate table table_name; 最后恢复:SET F ...

  5. Linux之zookeeper开机启动

    1.用cd 命令切换到/etc/rc.d/init.d/目录下 [root@bogon ~]# cd /etc/rc.d/init.d 2.用touch zookeeper创建一个文件 [root@b ...

  6. JavaWeb_(Hibernate框架)Hibernate中重要的api

    Hibernate中重要的api Configuration SessionFactory Session(重点) Transaction 在Dao层中UserDao.java使用Hibernate向 ...

  7. Ranger使用solrCloud存储审计日志

    Ranger使用solrCloud存储审计日志 标签(空格分隔): Ranger 1, Zookeeper 搭建 1,忽略.默认已经搭建好zk 集群. VECS17820:2181,VECS17821 ...

  8. What makes a good feature

    import numpy as np import matplotlib.pyplot as plt greyhounds = 500 # 灰猎犬500只 labs = 500 # 拉布拉多犬500只 ...

  9. zookeeper系列(二)zookeeper的使用--javaAPI

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败: 出处:http://www.cnblogs.com/leesf456/ (尊重原创,感谢作者整理的这么好,作者的部分内容添加了我的理解 ...

  10. 06.旋转数组的最小数字 Java

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...