import
javax.swing.
*
;
import java.awt. * ;
import java.awt.event. * ;
/** */ /**
*使java application生成托盘图标的例子
*本代码在JDK1.6上,Winxp平台上测试通过
*@author:NetJava.org
*/
public class TrayTest
... {
public static void main(String[] args)
...{
PopupMenu popup = new PopupMenu();
MenuItem menuExit = new MenuItem("退出");
MenuItem menuOpen = new MenuItem("打开");
MenuItem menuCancel = new MenuItem("取消");
//创建退出菜单监听器
ActionListener exitListener = new ActionListener() ...{
public void actionPerformed(ActionEvent e)
...{
System.exit(0);
} };
//创建打开监听器
ActionListener openListener = new ActionListener() ...{
public void actionPerformed(ActionEvent e)
...{
JOptionPane.showInputDialog("请输入您的密码:");
}
};
menuExit.addActionListener(exitListener);
menuOpen.addActionListener(openListener);
popup.add(menuOpen);
popup.add(menuCancel);
popup.add(menuExit);
//------------
CreateTray ct =CreateTray.getInstance();
//工作目录下使用的tray图标文件
String ic;
if(!ct.CreteTrayIcon(iconFileName,"我的托盘",popup))
...{
System.out.println("不能创建托盘");
}
}
}
class CreateTray
... {
private CreateTray()...{}
private static CreateTray ct=null;
/** *//**创建单实列*/
public static CreateTray getInstance()
...{
//因为使用了判断语句,所以要用getInstance()方法
if(ct==null)
...{
ct=new CreateTray();
}
return ct;}
/** *//**创建tray,如成功返回true值
@para trayImage:创建tray图标的图片文件名
@para trayName:tray显示名字
@para popup 这个tray上的PopupMenu
*/
public boolean CreteTrayIcon(String trayImage,String trayName,PopupMenu popup)
...{
boolean isCreated=false;
final TrayIcon trayIcon;//TrayIcon是一个预定义的类
if (SystemTray.isSupported())//如果系统支持托盘功能,如windows
...{
SystemTray tray = SystemTray.getSystemTray();//获取一个SystemTray对象
Image image = Toolkit.getDefaultToolkit().getImage(trayImage);//获取一个图标对象
//设定托盘图标,这是核心代码,其余的代码都是重新封装,以利使用
trayIcon = new TrayIcon(image, trayName, popup);
trayIcon.setImageAutoSize(true);
// TrayIcon对象的actionPerfomed()方法只响应双击事件
//托盘名称会作为tooltip在光标移动到托盘时自动显示
final ActionListener al = new ActionListener()...{
public void actionPerformed(ActionEvent e)
...{
trayIcon.displayMessage("托盘事件", "这个双击事件己到", TrayIcon.MessageType.WARNING);
}
};
trayIcon.addActionListener(al);
try
...{
tray.add(trayIcon);//将托盘添加到系统托盘
isCreated=true;
}
catch (AWTException e)
...{
System.err.println("无法创建托盘:"+e);
isCreated=false;
}
}
return isCreated;
}//end method
} // end class
import java.awt. * ;
import java.awt.event. * ;
/** */ /**
*使java application生成托盘图标的例子
*本代码在JDK1.6上,Winxp平台上测试通过
*@author:NetJava.org
*/
public class TrayTest
... {
public static void main(String[] args)
...{
PopupMenu popup = new PopupMenu();
MenuItem menuExit = new MenuItem("退出");
MenuItem menuOpen = new MenuItem("打开");
MenuItem menuCancel = new MenuItem("取消");
//创建退出菜单监听器
ActionListener exitListener = new ActionListener() ...{
public void actionPerformed(ActionEvent e)
...{
System.exit(0);
} };
//创建打开监听器
ActionListener openListener = new ActionListener() ...{
public void actionPerformed(ActionEvent e)
...{
JOptionPane.showInputDialog("请输入您的密码:");
}
};
menuExit.addActionListener(exitListener);
menuOpen.addActionListener(openListener);
popup.add(menuOpen);
popup.add(menuCancel);
popup.add(menuExit);
//------------
CreateTray ct =CreateTray.getInstance();
//工作目录下使用的tray图标文件
String ic;
if(!ct.CreteTrayIcon(iconFileName,"我的托盘",popup))
...{
System.out.println("不能创建托盘");
}
}
}
class CreateTray
... {
private CreateTray()...{}
private static CreateTray ct=null;
/** *//**创建单实列*/
public static CreateTray getInstance()
...{
//因为使用了判断语句,所以要用getInstance()方法
if(ct==null)
...{
ct=new CreateTray();
}
return ct;}
/** *//**创建tray,如成功返回true值
@para trayImage:创建tray图标的图片文件名
@para trayName:tray显示名字
@para popup 这个tray上的PopupMenu
*/
public boolean CreteTrayIcon(String trayImage,String trayName,PopupMenu popup)
...{
boolean isCreated=false;
final TrayIcon trayIcon;//TrayIcon是一个预定义的类
if (SystemTray.isSupported())//如果系统支持托盘功能,如windows
...{
SystemTray tray = SystemTray.getSystemTray();//获取一个SystemTray对象
Image image = Toolkit.getDefaultToolkit().getImage(trayImage);//获取一个图标对象
//设定托盘图标,这是核心代码,其余的代码都是重新封装,以利使用
trayIcon = new TrayIcon(image, trayName, popup);
trayIcon.setImageAutoSize(true);
// TrayIcon对象的actionPerfomed()方法只响应双击事件
//托盘名称会作为tooltip在光标移动到托盘时自动显示
final ActionListener al = new ActionListener()...{
public void actionPerformed(ActionEvent e)
...{
trayIcon.displayMessage("托盘事件", "这个双击事件己到", TrayIcon.MessageType.WARNING);
}
};
trayIcon.addActionListener(al);
try
...{
tray.add(trayIcon);//将托盘添加到系统托盘
isCreated=true;
}
catch (AWTException e)
...{
System.err.println("无法创建托盘:"+e);
isCreated=false;
}
}
return isCreated;
}//end method
} // end class