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. java合并数组的几种方法,stream流合并数组

    一.实例代码 package cc.ash; import org.apache.commons.lang3.ArrayUtils; import java.lang.reflect.Array; i ...

  2. 块格式化上下文(Block Formatting Context,BFC)

    块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域. 下列方式会创建块格 ...

  3. Eclipse里Maven配置

    简单记录一下,太特么困了,这几天天天加班很晚来着 : 选中.Apply and Close. 完成. 日他得,腰都快加断了……:) ---------------------------------- ...

  4. return new Promise的时候,不能带着.then()方法

    app.js return new Promise的同时带着.then()方法会出错 return出去的这个Promise,整体状态会显示pending,虽然详细里状态显示resolve,但是没有re ...

  5. 适合没有ui的项目的样式

    官网: https://www.tailwindcss.cn/

  6. if语句分析

    1.if语句的反汇编判断 if语句反汇编后的标志:     执行各类影响标志位的指令             jxx xxxx 如果遇到上面的指令,则很可能是if语句:   例如:     1.案例一 ...

  7. ASCII和UTF-8

    造冰箱的熊猫@cnblogs 2018/12/11 用了这么久的UTF-8,第一次了解了点UTF-8的细节 UTF-8[1]属于变长度编码.一个UTF-8字符的编码长度为1~4个字节. 1)长度为1个 ...

  8. CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)D

    题面 一开始想到一个 O(N^2) 做法,先把x排序,然后顺次枚举x最大的点,看向前最多可以保留多少点 (也就是先不管正方形的上下长度限制,先考虑左右的限制).然后再对这些点做一遍类似的..(等等这么 ...

  9. Android UI编程之自定义控件初步——ImageButton

    我想我们在使用一些App的时候,应该不会出现一些“裸控件”的吧.除非是一些系统中的软件,那是为了保持风格的一致性,做出的一些权衡.我这里并非是在指责Android原生的控件不好看,说实在的,我很喜欢A ...

  10. Latex的beamer幻灯片图形不编号的问题

    在beamer幻灯片中如果插入图形,一般不会显示图形编号,这是其默认模式,但我们可以通过设置给图形编号.解决办法是: 在导言区加上命令: \setbeamertemplate{caption}[num ...