【问题标题】:Java TrayIcon.displayMessage() does not work on Windows XPJava TrayIcon.displayMessage() 在 Windows XP 上不起作用
【发布时间】:2011-07-22 18:05:15
【问题描述】:

我正在编写一个在系统托盘中运行的应用程序,并在发生某些事情时通知用户(即弹出其中一个气泡)。唯一的问题是通知似乎只适用于 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 程序,但没有任何通知起作用。我开始认为我无法让它在其中一台计算机上运行......

【问题讨论】:

    标签: java windows swing system-tray


    【解决方案1】:

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

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

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

    【讨论】:

    • 我可以从哪里设置值?请帮帮我。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复,我之前也遇到过类似的问题,除了通知在 Windows 7 上无缘无故停止工作。我只能通过恢复到我之前使用的早期版本的程序来修复它知道工作。我从来没有设法找出阻止它们弹出的问题。我只是希望我不必为了弄清楚这一点而浪费数周的工作:/
    • 经过进一步调查,似乎是操作系统本身导致了问题(到目前为止,我尝试过的所有 XP 计算机都是特殊的企业安装)。似乎操作系统实际上没有显示任何类型的弹出通知,我曾多次听到 Windows Update 之类的 Windows“弹出”通知声音,但没有出现气泡。我想现在唯一要做的就是在非企业 XP 安装上尝试它,如果它可以工作。
    • 是的,我已经确认我的程序没有问题。请参阅问题中的更新。
    【解决方案3】:

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

    这应该是注释,但这是字符长度的限制

    也许,当 Java 更新由 AD 或 ZenWorks 的某些管理工具分发时,有时(在 win7/Xp 上)需要卸载所有 Java 安装并手动安装新的 JRE(但稳定的 1.6.022 我的观点),sw 分发结束时没有错误,但是来自 Java6 的所有(???)类/方法/更改都无法访问,部分(RowSorter 等)测试以错误结束,并且我从不搜索知道 MS、Novell 上的 Bug ...

    【讨论】:

      猜你喜欢
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2015-12-03
      • 1970-01-01
      • 2014-09-02
      • 2013-05-05
      • 2012-04-23
      相关资源
      最近更新 更多