【问题标题】:Can JavaFX natively show OS notifications?JavaFX 可以原生显示操作系统通知吗?
【发布时间】:2017-12-12 01:53:08
【问题描述】:

AWT 的 TrayIcon 类有一个名为 displayMessage 的方法,它显示 Windows 10 中的原生操作系统消息,如下所示:

作为弹出窗口,像这样:

在通知区域。

JavaFX 可以本机执行此操作吗?我知道 JavaFX 还没有实现托盘栏支持,必须使用 AWT,但是这些通知托盘栏是否依赖?

【问题讨论】:

  • ControlsFX 有类似的,
  • 我不确定我是否理解您的问题,特别是“托盘栏依赖”通知的含义。您可以使用awt classes to show tray notifications for JavaFX classes,正如您在问题中所指出的那样,您似乎已经知道了。有一个 unactioned feature request (JDK-8092115) 用于对系统托盘功能的直接 JavaFX API 支持。
  • 哇,94k 代表主要来自问题,太邪恶了,以前从未见过 :-) 荣誉...
  • @jewlsea 我的意思是,即使 JavaFX 没有实现托盘栏支持,它仍然可以实现这些通知,因为它们独立于托盘栏。我只是抢先有人指出 JavaFX 中不支持托盘栏,这是您需要使用 AWT 进行通知的原因。

标签: java javafx notifications


【解决方案1】:

显然 javaFx 仍然没有提供显示托盘通知的方式,但您可以使用 3rd 方库来实现您的目标。

TrayNotification

    String title = "Congratulations sir";
    String message = "You've successfully created your first Tray Notification";

    Notification notification = Notifications.SUCCESS;
    TrayNotification tray = new TrayNotification(title, message, notification);
    tray.showAndWait();

* * * * * * * *

ControlsFX

Notifications.create()
              .title("Title Text")
              .text("Hello World 0!")
              .showWarning();

【讨论】:

  • 但是那些不使用操作系统通知,是吗?
  • 我会接受这个答案,因为第一句话真的回答了我的问题“不,这还不可能”。我个人认为将 AWT 用于本机操作系统通知比自定义通知要好一些,但争论这不是问题的目标。也许有一天我们会在 JavaFX 实现它时更新它。
  • 感谢您的回答@aKilleR。
  • @Pablo 确实,我也更喜欢 AWT 原生弹出窗口,直到 oracle 推出新的 FX 之一,也谢谢你
  • 随着 Oracle 停止对 JavaFX 的支持和进一步开发,我们将看看社区是否会采取任何措施,但我并没有抱太大希望。
【解决方案2】:

您不需要任何 3drparti 库。

你可以在mac中使用osascriptdisplay

// java version
Runtime.getRuntime().exec(new String[] { "osascript", "-e", "display notification \"Message\" with title \"Title\"" });

// koltin version
Runtime.getRuntime().exec(arrayOf("osascript", "-e", "display notification \"Message\" with title \"Title\""))

【讨论】:

  • 这个答案是针对mac的,但是提问者的操作系统是windows,对于java来说最好有跨平台的解决方案。
【解决方案3】:

对于 2020 年提出这个问题的任何人,这里有一个展示使用 JavaFX 的原生操作系统通知的尝试:

https://gist.github.com/wiverson/d2edf0d66ad195c96793d0d25290753b

如示例中所述,如果应用位于后台,则操作系统原生通知是最好的 - 如果应用位于前台,则使用 ControlsFX 通知。

这适用于 macOS Big Sur,也应该适用于 Windows。

[21 年 1 月 5 日编辑] 这里有一个项目也可以帮助解决这个问题:

https://github.com/dustinkredmond/FXTrayIcon

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多