繁体   English   中英

Java-Windows XP,Vista上不显示TrayIcon消息

[英]Java - TrayIcon messages not displaying on Windows XP, Vista

我正在编写一个利用Java的TrayIcon类的应用程序,但似乎无法在Windows XP / Vista上显示消息。 这是一个已知问题还是我缺少什么? (消息在Windows 7上以应有的方式显示)

码:

public class SysTray {
    public static void main(String[] args) throws Exception {
        TrayIcon icon = new TrayIcon(getImage());

        icon.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "Good");
            }
        });
        SystemTray.getSystemTray().add(icon);

        icon.displayMessage("Attention", "Please click here", 
            TrayIcon.MessageType.WARNING);
    }

    private static Image getImage() throws HeadlessException {
        Icon defaultIcon = MetalIconFactory.getTreeHardDriveIcon();
        Image img = new BufferedImage(defaultIcon.getIconWidth(), 
            defaultIcon.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR);
        defaultIcon.paintIcon(new Panel(), img.getGraphics(), 0, 0);

        return img;
    }
}

编辑:计算机都使用最新版本的Java

编辑II:在各种计算机上的测试结果:

  • Windows XP,J7_25(1.7.0_25-b16):有效
  • Windows 7,J7_25(1.7.0_25-b17):有效
  • Windows XP,J7_25(1.7.0_25-b17):不起作用

查看发生了什么(在两个JDK上都经过测试的Java6_022和Java7_21)

WinXP--> 在此处输入图片说明

Win8--> 在此处输入图片说明

从代码

import java.awt.AWTException;
import java.awt.EventQueue;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.Icon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.plaf.metal.MetalIconFactory;

public class SysTray {

    public SysTray() {
        TrayIcon icon = new TrayIcon(getImage());
        icon.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "Good");
            }
        });
        try {
            SystemTray.getSystemTray().add(icon);
        } catch (AWTException ex) {
        }
        icon.displayMessage("Attn","Click here",TrayIcon.MessageType.WARNING);
    }

    private Image getImage() throws HeadlessException {
        Icon defaultIcon = MetalIconFactory.getTreeHardDriveIcon();
        Image img = new BufferedImage(defaultIcon.getIconWidth(),
                defaultIcon.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR);
        defaultIcon.paintIcon(new JPanel(), img.getGraphics(), 0, 0);
        return img;
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                SysTray sysTray = new SysTray();
            }
        });
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM