shell.setLayout(new GridLayout(2, true)); shell.setImage(new org.eclipse.swt.graphics.Image(Display.getCurrent(),"img/rssGui.gif")); shell.controlInit(shell); // shell.open(); shell.layout(); // shell.setVisible(false); //不显示窗体 while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } catch (Exception e) { e.printStackTrace(); } } int is=-1; public SystemTray(Display display, int style) { super(display, style); createContents(); } protected void createContents() { setText("SWT Application"); setSize(200,375);
} public void controlInit(SystemTray shell){ // new Button(shell, SWT.PUSH).setText("启动"); } protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } public void createSystemTray(final Shell shell) { // 下面两句的效果是:在任务栏不显示 final int hWnd = shell.handle; OS.SetWindowLong(hWnd, OS.GWL_EXSTYLE, OS.WS_EX_CAPTIONOKBTN); shell.addShellListener(new ShellListener() { public void shellDeactivated(org.eclipse.swt.events.ShellEvent e) { System.out.println("shellDeactivated"); //失去焦点 } public void shellActivated(org.eclipse.swt.events.ShellEvent e) { System.out.println("shellActivated"); //获得焦点 } public void shellClosed(org.eclipse.swt.events.ShellEvent e) { System.out.println("shellClosed"); } /** * Sent when a shell is un-minimized. */ public void shellDeiconified(org.eclipse.swt.events.ShellEvent e) { System.out.println("shellDeiconified"); } /** * Sent when a shell is minimized. Shell 最小化后事件 */ public void shellIconified(org.eclipse.swt.events.ShellEvent e) { // 最小化时不显示在任务栏 shell.setVisible(false); System.out.println("shell.setVisible(false);"); } });
//系统托盘 Display display = shell.getDisplay(); // Image image = new Image (display, 16, 16); Image image = new Image(display, "img/rssGui.gif"); final Tray tray = display.getSystemTray(); final TrayItem trayItem = new TrayItem(tray, SWT.NONE); trayItem.setToolTipText("SWT TrayItem"); // trayItem.addListener(SWT.Show, new Listener() { // public void handleEvent(Event event) { // System.out.println("show"); // } // }); // trayItem.addListener(SWT.Hide, new Listener() { // public void handleEvent(Event event) { // System.out.println("hide"); // } // }); // 托盘单击事件 // trayItem.addListener(SWT.Selection, new Listener() { // public void handleEvent(Event event) { // System.out.println("selection"); // // shell.setVisible(true); // // shell.setMinimized(false); // } // }); // 托盘双击事件 // trayItem.addListener(SWT.DefaultSelection, new Listener() { // public void handleEvent(Event event) { // System.out.println("default selection"); // shell.setVisible(true); // shell.setMinimized(false); // } // }); // 添加托盘右键菜单 final Menu menu = new Menu(shell, SWT.POP_UP); MenuItem menuItemMaximize = new MenuItem(menu, SWT.PUSH);// 启动程序 menuItemMaximize.setText("启动"); menuItemMaximize.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { is=0; Timer timer=new Timer(); timer.schedule(new ListingTimerRss(),0,30000); } public void widgetDefaultSelected(SelectionEvent e) { // widgetSelected(e); } });// MenuItem menuItemMinimize = new MenuItem(menu, SWT.PUSH);// 最小化菜单 // menuItemMinimize.setText("Minimize"); // menuItemMinimize.addSelectionListener(new SelectionListener() { // public void widgetSelected(SelectionEvent e) { // shell.setMinimized(true); // } // // public void widgetDefaultSelected(SelectionEvent e) { // // widgetSelected(e); // } // }); new MenuItem(menu, SWT.SEPARATOR);// 分割条 MenuItem menuItemClose = new MenuItem(menu, SWT.PUSH);// 关闭菜单 menuItemClose.setText("退出"); menuItemClose.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { Display.getCurrent().close(); System.exit(0); } public void widgetSelected(SelectionEvent e) { widgetDefaultSelected(e); } }); trayItem.addListener(SWT.MenuDetect, new Listener() { public void handleEvent(Event event) { menu.setVisible(true); if(is==0)menu.getItem(0).setEnabled(false); } }); trayItem.setImage(image); } }需要导入一些包,最主要的是swt.jar
需要JDK1.6才能使用 public void systemTray(){ createPopupMenu(); try { if (java.awt.SystemTray.isSupported()) {// 判断当前平台是否支持系统托盘 java.awt.SystemTray st = java.awt.SystemTray.getSystemTray(); Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/res/server.png"));//定义托盘图标的图片 java.awt.TrayIcon ti = new java.awt.TrayIcon(image); ti.setToolTip("服务管理器"); ti.setPopupMenu(popupmenu); //为托盘添加右键菜单 ti.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { if (evt.getClickCount()==2){ OpenServer(); } } }); st.add(ti); } } catch (Exception e) {
JDK1.5的得用windows的API来实现了。
import org.eclipse.swt.layout.GridLayout;
import java.util.Timer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.ShellListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
/**系统托盘
* @author Administrator
*
*/
public class SystemTray extends Shell{ public SystemTray(){}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Display display = Display.getDefault();
SystemTray shell = new SystemTray(display, SWT.MIN | SWT.CLOSE);
shell.createSystemTray(shell);
shell.setLayout(new GridLayout(2, true));
shell.setImage(new org.eclipse.swt.graphics.Image(Display.getCurrent(),"img/rssGui.gif"));
shell.controlInit(shell);
// shell.open();
shell.layout();
// shell.setVisible(false); //不显示窗体
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} catch (Exception e) {
e.printStackTrace();
}
}
int is=-1;
public SystemTray(Display display, int style) {
super(display, style);
createContents();
}
protected void createContents() {
setText("SWT Application");
setSize(200,375);
}
public void controlInit(SystemTray shell){
// new Button(shell, SWT.PUSH).setText("启动");
}
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
} public void createSystemTray(final Shell shell) {
// 下面两句的效果是:在任务栏不显示
final int hWnd = shell.handle;
OS.SetWindowLong(hWnd, OS.GWL_EXSTYLE, OS.WS_EX_CAPTIONOKBTN);
shell.addShellListener(new ShellListener() {
public void shellDeactivated(org.eclipse.swt.events.ShellEvent e) {
System.out.println("shellDeactivated"); //失去焦点
} public void shellActivated(org.eclipse.swt.events.ShellEvent e) {
System.out.println("shellActivated"); //获得焦点
} public void shellClosed(org.eclipse.swt.events.ShellEvent e) {
System.out.println("shellClosed");
} /**
* Sent when a shell is un-minimized.
*/
public void shellDeiconified(org.eclipse.swt.events.ShellEvent e) {
System.out.println("shellDeiconified");
} /**
* Sent when a shell is minimized. Shell 最小化后事件
*/
public void shellIconified(org.eclipse.swt.events.ShellEvent e) {
// 最小化时不显示在任务栏
shell.setVisible(false);
System.out.println("shell.setVisible(false);");
}
});
//系统托盘
Display display = shell.getDisplay();
// Image image = new Image (display, 16, 16);
Image image = new Image(display, "img/rssGui.gif");
final Tray tray = display.getSystemTray();
final TrayItem trayItem = new TrayItem(tray, SWT.NONE);
trayItem.setToolTipText("SWT TrayItem");
// trayItem.addListener(SWT.Show, new Listener() {
// public void handleEvent(Event event) {
// System.out.println("show");
// }
// });
// trayItem.addListener(SWT.Hide, new Listener() {
// public void handleEvent(Event event) {
// System.out.println("hide");
// }
// }); // 托盘单击事件
// trayItem.addListener(SWT.Selection, new Listener() {
// public void handleEvent(Event event) {
// System.out.println("selection");
// // shell.setVisible(true);
// // shell.setMinimized(false);
// }
// }); // 托盘双击事件
// trayItem.addListener(SWT.DefaultSelection, new Listener() {
// public void handleEvent(Event event) {
// System.out.println("default selection");
// shell.setVisible(true);
// shell.setMinimized(false);
// }
// });
// 添加托盘右键菜单
final Menu menu = new Menu(shell, SWT.POP_UP); MenuItem menuItemMaximize = new MenuItem(menu, SWT.PUSH);// 启动程序
menuItemMaximize.setText("启动");
menuItemMaximize.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
is=0;
Timer timer=new Timer();
timer.schedule(new ListingTimerRss(),0,30000);
}
public void widgetDefaultSelected(SelectionEvent e) {
// widgetSelected(e);
}
});// MenuItem menuItemMinimize = new MenuItem(menu, SWT.PUSH);// 最小化菜单
// menuItemMinimize.setText("Minimize");
// menuItemMinimize.addSelectionListener(new SelectionListener() {
// public void widgetSelected(SelectionEvent e) {
// shell.setMinimized(true);
// }
//
// public void widgetDefaultSelected(SelectionEvent e) {
// // widgetSelected(e);
// }
// }); new MenuItem(menu, SWT.SEPARATOR);// 分割条 MenuItem menuItemClose = new MenuItem(menu, SWT.PUSH);// 关闭菜单
menuItemClose.setText("退出");
menuItemClose.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
Display.getCurrent().close();
System.exit(0);
} public void widgetSelected(SelectionEvent e) {
widgetDefaultSelected(e);
}
}); trayItem.addListener(SWT.MenuDetect, new Listener() {
public void handleEvent(Event event) {
menu.setVisible(true);
if(is==0)menu.getItem(0).setEnabled(false);
}
});
trayItem.setImage(image);
}
}需要导入一些包,最主要的是swt.jar
public void systemTray(){
createPopupMenu();
try {
if (java.awt.SystemTray.isSupported()) {// 判断当前平台是否支持系统托盘
java.awt.SystemTray st = java.awt.SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/res/server.png"));//定义托盘图标的图片
java.awt.TrayIcon ti = new java.awt.TrayIcon(image);
ti.setToolTip("服务管理器");
ti.setPopupMenu(popupmenu); //为托盘添加右键菜单
ti.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount()==2){
OpenServer();
}
}
});
st.add(ti);
}
} catch (Exception e) {
}
}
需要包的话QQ:617736906