小弟初学java,做了个小托盘,却怎么都不成功,求帮助呀~~
private void SystemTrayInitial(){
if(!SystemTray.isSupported())
return;
try{
String title="xxx";
String company="xxxxxxx";
SystemTray sysTray=SystemTray.getSystemTray();
Image image=Toolkit.getDefaultToolkit().getImage(LoginFrame.class.getResource("/icons/sysTray.png"));
TrayIcon trayicon = new TrayIcon(image,title+"\n"+company,createMenu());
trayicon.setImageAutoSize(true);
trayicon.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(true);
toFront();
}
});
sysTray.add(trayicon);
trayicon.displayMessage(title,company,MessageType.INFO);
}catch(Exception e){
e.printStackTrace();
}
}
private PopupMenu createMenu() {
// TODO Auto-generated method stub
PopupMenu menu=new PopupMenu();
MenuItem exitItem=new MenuItem("退出");
exitItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
MenuItem openItem=new MenuItem("打开");
openItem.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e){
if(!isVisible()){
setVisible(true);
        toFront();
}else
toFront();
}
});
menu.add(openItem);
menu.addSeparator();
menu.add(exitItem);
return menu;
}

解决方案 »

  1.   

    我用的是JDK 6.0, 我这里运行完全正常。
    package test;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.TrayIcon.MessageType;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JFrame;public class TestSystemTray extends JFrame {
    public static void main(String[] args) {
    new TestSystemTray().SystemTrayInitial();
    } private void SystemTrayInitial() {
    if (!SystemTray.isSupported())
    return;
    try {
    String title = "xxx";
    String company = "xxxxxxx";
    SystemTray sysTray = SystemTray.getSystemTray();
    Image image = Toolkit.getDefaultToolkit().getImage("/icons/sysTray.png");
    TrayIcon trayicon = new TrayIcon(image, title + "\n" + company, createMenu());
    trayicon.setImageAutoSize(true);
    trayicon.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    setVisible(true);
    toFront();
    }
    });
    sysTray.add(trayicon);
    trayicon.displayMessage(title, company, MessageType.INFO);
    } catch (Exception e) {
    e.printStackTrace();
    }
    } private PopupMenu createMenu() {
    PopupMenu menu = new PopupMenu();
    MenuItem exitItem = new MenuItem("退出");
    exitItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    System.exit(0);
    }
    });
    MenuItem openItem = new MenuItem("打开");
    openItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!isVisible()) {
    setVisible(true);
    toFront();
    } else
    toFront();
    }
    });
    menu.add(openItem);
    menu.addSeparator();
    menu.add(exitItem);
    return menu;
    }
    }
      

  2.   

    老紫竹的代码要在jdk1.6以上的环境才能运行,查看一下你的jdk然后调试上面的代码就可以了