请问java中要使应用程序在桌面托盘区显示应该怎么做??谢谢

解决方案 »

  1.   

    jdic.dev.java.net 
    下载个 (J)ava (D)esktop (I)ntegrated (C)omponent 类库和几个样例。
      

  2.   

    本人以前曾经写过,但是需要调用windows本地的dll。
    如果楼主方便请给我你的地址,我可以寄给你。 请用短信通知,谢谢
      

  3.   

    SourceForge上有个Systray For Java(systray4j)的项目,好像到2.1版本了,很强,你可以去下载下来,搜索一下肯定能找到。
    这是我写的一个测试,eclipse.ico是显示在托盘里的图标,16×16package test;import javax.swing.JFrame;
    import java.awt.event.*;
    import java.awt.Point;import snoozesoft.systray4j.*;public class SystrayFrame extends JFrame implements SysTrayMenuListener {
        SysTrayMenuItem activateItem = null;
        SysTrayMenuItem exitItem = null;
        CheckableMenuItem alarmItem = null;
        
        SysTrayMenu menu = null;
        
        Point location = null;
        
        public static void main(String[] args) {
            SystrayFrame frame = new SystrayFrame();
            frame.setVisible(true);
        }
        
        public SystrayFrame () {
            super("Systray Frame Test");
            setSize(400, 344);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            addWindowListener(new WindowAdapter() {
                public void windowIconified(WindowEvent e) {
                    minimizeToSystray();
                }
            });
        }
        
        public void menuItemSelected(SysTrayMenuEvent e) {
            if (e.getActionCommand().equals("alarm")) {
                if (alarmItem.getState()) {
                }
                else {
                }
            }
            else if (e.getActionCommand().equals("activate")) {
                activateWindow();
            }
            else if (e.getActionCommand().equals("exit")) {
                System.exit(0);
            }
            else {
                
            }
        }    public void iconLeftClicked(SysTrayMenuEvent e) {
            
        }    public void iconLeftDoubleClicked(SysTrayMenuEvent e) {
            activateWindow();
        }
        
        protected void minimizeToSystray() {
            location = this.getLocation();
            this.dispose();
            
            SysTrayMenuIcon icon =  new SysTrayMenuIcon("eclipse.ico");
            icon.addSysTrayMenuListener(this);
            menu = new SysTrayMenu(icon, "Inspirento");
            alarmItem = new CheckableMenuItem("Alarm On", "alarm");
            activateItem = new SysTrayMenuItem("Activate Main Window", "activate");
            exitItem = new SysTrayMenuItem("Exit", "exit");
            alarmItem.addSysTrayMenuListener(this);
            activateItem.addSysTrayMenuListener(this);
            exitItem.addSysTrayMenuListener(this);
            menu.addItem(exitItem);
            menu.addSeparator();
            menu.addItem(alarmItem);
            menu.addItem(activateItem);
        }
        
        protected void activateWindow() {
            menu.hideIcon();
            this.setLocation(location);
            this.setVisible(true);
        }
    }
      

  4.   

    已经寄了,执行start.bat即可。
      

  5.   

    JDK 1.6 有了托盘图标的功能下面程序的托盘图标会在5秒后变一下。期待 JDK 1.6正式版尽快发布.....package com.abloger.officemm;import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.beans.*;public class OfficeMM implements ActionListener {

    private PopupMenu popup;
    private MenuItem[] menuItems;
    private Image imgNormal, imgMail;
    private TrayIcon trayIcon;

    public OfficeMM() {
    if (SystemTray.isSupported ()) {
    SystemTray tray = SystemTray.getSystemTray (); try {
    popup = new PopupMenu();
    menuItems = new MenuItem[3];

    for(int i = 0; i < menuItems.length; i++) {
    menuItems[i] = new MenuItem();
    menuItems[i].addActionListener(this);
    }

    menuItems[0].setLabel("Exit");
    menuItems[1].setLabel("Config");
    menuItems[2].setLabel("Home");


    popup.add(menuItems[2]);
    popup.add(menuItems[1]);
    popup.addSeparator();
    popup.add(menuItems[0]);

    imgNormal = Toolkit.getDefaultToolkit().getImage("tree.png");
    imgMail = Toolkit.getDefaultToolkit().getImage("tree1.png");
    trayIcon = new TrayIcon (imgNormal, "System Tray Demo #2", popup);
    trayIcon.setActionCommand("My Icon");           
    tray.add(trayIcon);

    try {
    Thread.sleep(5000);
    } catch (Exception e) {

    }

    trayIcon.setImage(imgMail);
    } catch (AWTException e) {   
    System.out.println (e.getMessage ());    
    return;    
    }    
    }
    }

    public static void main (String [] args) {
    new OfficeMM();
    } public void actionPerformed(ActionEvent e) {
    if (e.getSource() == menuItems[0]) {
    System.exit(0);
    } else if (e.getSource() == menuItems[1]) {
    System.out.println("open");
    }
    }
    }
      

  6.   

    menu = new SysTrayMenu(icon, "Inspirento");
            alarmItem = new CheckableMenuItem("Alarm On", "alarm"); 执行过不去是什么原因?
      

  7.   

    yuanjinming(清醒看程序) 
    你执行不过去,是因为你没有用JDK1.6
    系统栏的图标只有JDK1.6才支持