Java TrayIcon.displayMessage()在Windows XP上不起作用

时间:2011-07-22 18:05:15

标签: java windows swing system-tray

我正在编写一个在系统托盘中运行的应用程序,当事情发生时通知用户(即弹出其中一个气泡)。唯一的问题是通知似乎只适用于Windows 7,而不适用于Windows XP。

我在2台Windows 7计算机上测试过它们(它们都有效)和4台Windows XP计算机(它们都没有工作)。没有显示通知气泡,并且(据我所知)没有抛出任何异常,其他一切都按预期工作。我甚至在Mac上对它进行了测试,但它确实有效,但它并不太漂亮。

以下是我的代码示例。

private static TrayIcon trayIcon;
...
trayIcon = new TrayIcon(trayImage.getImage());
...
if (!SystemTray.isSupported())
{
    System.out.println("SystemTray is not supported");
    return;
}
final PopupMenu popup = new PopupMenu();
final SystemTray tray = SystemTray.getSystemTray();
trayIcon.setToolTip("Widget Name Here [" + role + "]");
...
try
{
    tray.add(trayIcon);
}
catch (AWTException e)
{
    System.err.println("TrayIcon could not be added.");
    return;
}
...
//Here's where it doesn't work on XP
trayIcon.displayMessage("Connection error",
                "Could not connect to server, please check your internet/VPN "
                + "connection", TrayIcon.MessageType.ERROR);

非常感谢任何帮助。

更新:好的,我刚刚确认这不是我的程序的问题,但是XP安装的一个问题我一直在测试它们。我在XP计算机上运行了发现here的TrayIconDemo.java程序,但没有任何通知有效。我开始认为我无法在其中一台电脑上工作......

3 个答案:

答案 0 :(得分:2)

好的,所以我终于找到了解决问题的方法。事实证明,默认情况下,我正在测试的安装上将以下密钥设置为0(false):

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\EnableBalloonTips

要启用通知气泡,只需将值设置为1

答案 1 :(得分:1)

我有Windows XP并且正在使用系统托盘应用程序。我刚刚添加了displayMessage(),它对我来说效果很好。尝试简化您的应用程序。我相信它会奏效。发现一个错误。

答案 2 :(得分:1)

编辑:您没有提到JRE版本System try required Java6

这应该是评论,但这是chars lenght

的限制

也许,还有另一个原因,当某些管理工具为AD或ZenWorks分发Java更新时,有时需要(在win7 / xp上)卸载所有java instalactions并手动安装新的JRE(但稳定的1.6.022我的观点),sw distibutions结束没有错误,但所有(???)类/方法/更改来自Java6是不可访问的,部分(RowSorter等...)测试以错误结束,并且我从不在MS,Novell上寻找知道的Bugs ......