使用Java实现系统托盘功能的介绍(附源码以及截图)
java中如何,实现系统托盘功能.
示例图
项目包结构图
系统运行截图
应用核心逻辑说明,隐藏到托盘实质就是讲窗体隐藏.即setvisible(false),显示窗体即就是讲setvisible(true).
项目代码如下:
package org.pdp.frame;
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.net.url;
import javax.swing.imageicon;
import javax.swing.jframe;
import javax.swing.jmenu;
import javax.swing.jmenubar;
import javax.swing.jmenuitem;
public class mainframe extends jframe implements actionlistener{
private static final long serialversionuid = -7078030311369039390l;
private jmenu menu;
private jmenubar jmenubar;
private string [] jmitemname = {"置于托盘","系统退出"};
public mainframe(){
super("电话薄");
init();
this.setsize(500,400);
this.setjmenubar(jmenubar);
this.setlocationrelativeto(null);
systemtray(); //系统托盘
}
/**
* 初始化界面
*/
public void init(){
menu = new jmenu("系统窗体");
for(int i=0; i<jmitemname.length; i++){
jmenuitem menuitem = new jmenuitem(jmitemname[i]);
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);
}
}
/**系统托盘图标处理.*/
private void systemtray(){
if(systemtray.issupported()){ //判断系统是否支持托盘功能.
url resource = this.getclass().getresource("systray.jpg"); //获得图片路径
imageicon icon = new imageicon(resource); //创建图片对象
popupmenu popupmenu = new popupmenu(); //创建弹出菜单对象
menuitem itemexit = new menuitem("退出系统"); //创建弹出菜单中的退出项
menuitem itemshow = new menuitem("显示窗体"); //创建弹出菜单中的显示主窗体项.
itemexit.addactionlistener(new actionlistener() { //给退出像添加事件监听
@override
public void actionperformed(actionevent e) {
system.exit(0);
}
});
itemshow.addactionlistener(new actionlistener() { //给窗体最小化添加事件监听.
@override
public void actionperformed(actionevent e) {
setvisible(true);
}
});
popupmenu.add(itemexit);
popupmenu.add(itemshow);
trayicon trayicon = new trayicon(icon.getimage(),"电话薄系统",popupmenu);
systemtray systray = systemtray.getsystemtray();
try {
systray.add(trayicon);
} catch (awtexception e1) { }
}
}
/**
* 主方法
* @param args
*/
public static void main(string[] args) {
new mainframe().setvisible(true);
}
}