package com.hao.player;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Start{
public static void main(String []args)
{
MySystemTray mst=MySystemTray.getInstance();
}
}
class MySystemTray implements ActionListener
{
private static MySystemTray instance = null;
private static PopupMenu popupMenu;//trayIcon的弹出菜单
public static TrayIcon trayIcon;//系统托盘的托盘图标
private static SystemTray systemTray;//创建系统托盘
private static MenuItem exit;//弹出菜单的项
private MySystemTray()
{
if(systemTray==null)
{
systemTray=SystemTray.getSystemTray();//得到一个系统托盘
}
Image image=Toolkit.getDefaultToolkit().getImage("picture.gif");
trayIcon=new TrayIcon(image, "双击弹出程序,右击弹出菜单");
trayIcon.setImageAutoSize(true);//使图片完全显示
try
{
systemTray.add(trayIcon);//增加系统托盘图标
} catch (AWTException e)
{
e.printStackTrace();
}
popupMenu=new PopupMenu();
trayIcon.setPopupMenu(popupMenu);
exit = new MenuItem("Exit", null);
popupMenu.add(exit);
trayIcon.addActionListener(new MySystemTray());
exit.addActionListener(new MySystemTray());
}
public static synchronized MySystemTray getInstance(){
if(instance==null)
{
instance=new MySystemTray();
}
return instance;
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==exit)
{
systemTray.remove(trayIcon);
System.exit(0);
}else if(e.getSource()==trayIcon)
{
MainFrame mainFrame=new MainFrame();
mainFrame.showMusicList();
mainFrame.setAlwaysOnTop(true);
mainFrame.setVisible(true);
}
}
}
这段代码导致我的任务栏多了很多trayIcon=new TrayIcon(image, "双击弹出程序,右击弹出菜单");
很多托盘图标被创建了,为什么呢就像一个死循环!!!