62,621
社区成员
发帖
与我相关
我的任务
分享
package main;
import java.awt.AWTException;
import java.awt.Graphics;
import java.awt.Image;
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.image.ImageObserver;
import java.awt.image.ImageProducer;
import javax.swing.JOptionPane;
@SuppressWarnings("deprecation")
public class openDialog {
private static Thread serviceThread;
private static boolean pause = false;
private static TrayIcon tuopan;
private static Image image;
private static PopupMenu menu;
private static MenuItem startItem;
private static MenuItem stopItem;
private static JOptionPane o = new JOptionPane();
static{
//初始化托盘菜单
{
startItem = new MenuItem("start Service");
stopItem = new MenuItem("stop service");
startItem.enable();
stopItem.disable();
startItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
startService();
}
});
stopItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
pauseService();
}
});
menu = new PopupMenu();
menu.add(startItem);
menu.add(stopItem);
}
//初始化托盘
image = new Image() {
@Override
public ImageProducer getSource() {
// TODO Auto-generated method stub
return null;
}
@Override
public Object getProperty(String name, ImageObserver observer) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getHeight(ImageObserver observer) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Graphics getGraphics() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getWidth(ImageObserver observer) {
// TODO Auto-generated method stub
return 0;
}
};
tuopan = new TrayIcon(image, "", menu);
try {
SystemTray.getSystemTray().add(tuopan);
} catch (AWTException e) {
e.printStackTrace();
}
//定义服务线程
serviceThread = new Thread(new Runnable() {
@SuppressWarnings("static-access")
@Override
public void run() {
while(true){
try {
while(pause){
continue;
}
startItem.disable();
stopItem.enable(true);
if(o.showConfirmDialog(null, "Service is running!Click cancel to pause.", "javaService", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE)==2){
pauseService();
startItem.enable();
stopItem.disable();
continue;
}
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}
});
}
public static void main(String[] a){
serviceThread.start();
}
public static void showThreadStatus(){
System.out.println(serviceThread.getState());
}
public static void pauseService(){
pause = true;
}
public static void startService(){
pause = false;
}
}
if "%JAVA_HOME%" == "" set JAVA_HOME=D:\Program Files\Java\jdk1.7.0_02
set JVMDIR=%JAVA_HOME%\jre\bin\server
set JSBINDIR=%CD%
set JSEXE=%JSBINDIR%\JavaService.exe
set SSBINDIR=%JSBINDIR%
%JSEXE% -install MyService %JVMDIR%\jvm.dll -Djava.class.path=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%/lib/tools.jar;%SSBINDIR%\service -start main.openDialog
[/quote]
javaservice.exe 、所有类 和 批处理文件都已经放在同个目录下
if "%JAVA_HOME%" == "" set JAVA_HOME=D:\Program Files\Java\jdk1.7.0_02
set JVMDIR=%JAVA_HOME%\jre\bin\server
set JSBINDIR=%CD%
set JSEXE=%JSBINDIR%\JavaService.exe
set SSBINDIR=%JSBINDIR%
%JSEXE% -install MyService %JVMDIR%\jvm.dll -Djava.class.path=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%/lib/tools.jar;%SSBINDIR%\service -start main.openDialog