代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
系统托盘制作
作者:
刘兴liuxing
/ 发布于
2013/5/6
/
614
import java.awt.AWTException; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowEvent; import java.awt.event.WindowStateListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.Timer; import javax.swing.UIManager; /** * * @author Mr.LiuTao */ public class TrayByJdk extends JFrame implements ActionListener{ private JPanel pane = null; private JButton button = null; // 启动托盘图标的按钮 private JLabel label = null; // 用来显示系统是否支持托盘的信息 private TrayIcon trayIcon = null; // 托盘图标 private Timer shanshuo = null; private ImageIcon icon1 = null; private ImageIcon icon2 = null; private SystemTray tray = null; // 本操作系统托盘的实例 boolean gengai = false; //采用jdk1.6的托盘技术 实现跨平台的应用 public TrayByJdk() { //super("托盘技术演示"); icon1 = new ImageIcon("G:\\javaworks\\eclipsework\\山寨QQClient\\images\\16.gif"); // 将要显示到托盘中的图标 icon2 = new ImageIcon("G:\\javaworks\\eclipsework\\山寨QQClient\\images\\15.gif"); // 将要显示到托盘中的图标 try { // 将LookAndFeel设置成Windows样式 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { ex.printStackTrace(); } pane = new JPanel(); button = new JButton("缩小到托盘"); button.setEnabled(false); label = new JLabel("本操作系统不支持托盘"); pane.add(label); pane.add(button); //判断是否支持托盘 if (SystemTray.isSupported()) { this.tray(); } shanshuo = new Timer(1000,this); shanshuo.start(); this.getContentPane().add(pane); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 200); this.addWindowStateListener(new WindowStateListener () { public void windowStateChanged(WindowEvent state) { if(state.getNewState() == 1 || state.getNewState() == 7) { yinca(); } } }); this.setVisible(false); System.out.println("=============="+this.isVisible()); } /** * 托盘相关代码 */ private void tray() { label.setText("本操作系统支持托盘"); button.setEnabled(true); tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例 //ImageIcon icon = new ImageIcon("tray.gif"); // 将要显示到托盘中的图标 PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单 MenuItem show = new MenuItem("显示窗口"); MenuItem exit = new MenuItem("退出演示"); MenuItem author = new MenuItem("Author"); /** * TrayIcon有三个构造 * TrayIcon(Image image) 用“图标”来构造 * TrayIcon(Image image, String tooltip) 用“图标”和“ToolTip”构造 * TrayIcon(Image image, String tooltip, PopupMenu popup) 用“图标”,“ToolTip”,“弹出菜单”来构造一个托盘图标 */ trayIcon = new TrayIcon(icon1.getImage(), "托盘技术演示", pop); // 点击本按钮后窗口被关闭,托盘图标被添加到系统的托盘中 button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中 setVisible(false); // 使窗口不可视 } catch (AWTException ex) { ex.printStackTrace(); } } }); /** * 添加鼠标监听器,当鼠标在托盘图标上双击时,默认显示窗口 */ trayIcon.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { // 鼠标双击 tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标 setVisible(true); // 显示窗口 } } }); show.addActionListener(new ActionListener() { // 点击“显示窗口”菜单后将窗口显示出来 public void actionPerformed(ActionEvent e) { tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标 setVisible(true); // 显示窗口 } }); exit.addActionListener(new ActionListener() { // 点击“退出演示”菜单后推出程序 public void actionPerformed(ActionEvent e) { System.exit(0); // 退出程序 } }); author.addActionListener(new ActionListener() { // 点击“退出演示”菜单后推出程序 public void actionPerformed(ActionEvent e) { showMessage(); } }); pop.add(show); pop.add(exit); pop.add(author); } /** * 显示信息 */ private void showMessage() { JOptionPane.showMessageDialog(this, new JLabel("这是一个系统托盘"), "消息", JOptionPane.INFORMATION_MESSAGE); } public static void main(String[] args) { new TrayByJdk().yinca(); } public void yinca(){ try { tray.add(trayIcon); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 将托盘图标添加到系统的托盘实例中 setVisible(false); // 使窗口不可视 } @Override public void actionPerformed(ActionEvent arg0) { if(!gengai){ trayIcon.setImage(icon2.getImage()); gengai = true; }else{ trayIcon.setImage(icon1.getImage()); gengai = false; } } }
试试其它关键字
系统托盘制作
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
刘兴liuxing
贡献的其它代码
(
7
)
.
获取系统路径字体、得到某个目录下的所有文件名、获取
.
模仿QQ的聊天对话框
.
系统托盘制作
.
监听窗口大小变化事件
.
可以点击链接网址的Label
.
播放声音的类
.
带有背景图片的Jpanel
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3