问题 如何从Java呈现精美的桌面通知? [关闭]


我正在编写这个非常基本的J2SE应用程序,它不时地向用户发出一些信息。目前我使用SystemTray和TrayIcon类来显示通知,但我对此并不满意。它不允许我调整通知,也不允许他们好看。

那么,有没有人知道一个易于使用的库来生成好的通知?

顺便说一句,我将移植到Linux(Ubuntu),但将在那里使用notify-OSD,这正是我需要的。


6521
2018-06-27 21:26


起源

您可能能够继承TrayIcon并覆盖displayMessage() - jpm
@jpm这似乎是一个合理的想法。我希望有人已经这样做了。我不能成为地球上第一个需要这个权利的人吗?如果我使用这个解决方案,任何关于从哪里开始绘制通知的提示,因为我没有经验。任何参考都是受欢迎的。 - W. Goeman
实际上,在研究它时,似乎没有一种好的方法可以轻松地做到这一点。目前,您是否只使用默认外观?如果是这样,你可能会考虑尝试另一个。看看 官方教程 关于这个问题,看看是否可以满足你的需求。 - jpm


答案:


无耻的插件:我刚刚发布了一个名为的项目 眨眼 这几乎是Java Swing的Growl。你可以尝试一下 演示


6
2017-08-03 18:31



它在概念上看起来很棒,对我来说唯一的问题是价格......! - Michael Berry
感谢您的投入!你认为什么是适当的价格? - spreiter301
那真的取决于你的目标。在企业界,如果大公司需要那种紧密的整合,我敢肯定他们没有任何问题可以直接付款。我想我只是跳进来并期望它是一个不错的小GPL实用程序(考虑到我现在几乎只是在开源工作,可能是因为我的思维方式而不是其他任何东西!) - Michael Berry
我认为我的措辞不是那么好,因为“项目”听起来真的像开源。我从开发人员的角度重新考虑了价格(而不是我妻子的视角;-))并且确实很高。再次感谢您的投入! - spreiter301
该演示看起来很完美!正是我在寻找什么。但我和berry120有同样的问题。我正在寻找一个在非常小的开源实用程序中使用的东西,因此封闭源通知系统不会真正适合应用程序。 - W. Goeman


您可以使用 JCommunique 用于跨平台Java桌面通知。这是一个改编自的简短演示 例子 在维基上:

// makes a factory with the built-in clean theme
// themes are customizeable
NotificationFactory factory = new NotificationFactory(ThemePackagePresets.cleanLight());
// factories build notifications using a theme, while managers handle how
// how they appear on the screen
// this manager just simple pops up the notification in the specified location
// other managers do sliding, queues, etc.
NotificationManager plain = new SimpleManager(Location.NORTHEAST);

// creates a text notification; you can also have progress bar Notifications,
// icon Notifications, Notifications that ask for user feedback, etc.
TextNotification notification = factory.buildTextNotification("This is a title",
                                                              "This is a subtitle");
notification.setCloseOnClick(true);
// the notification will disappear after 2 seconds, or after you click it 
plain.addNotification(notification, Time.seconds(2));

简短的忏悔:我也是这个项目的创造者。它是开源的,所以我没有从中获得任何收入。

其他一些图书馆可以看看:

眨眼

  • 这已在另一个答案中提到,所以我不会对此说太多。我尝试了Java Webstart演示,看起来很不错。它允许一些更复杂的背景颜色选项,例如JCommunique没有的渐变。
  • 大约3,500行。
  • 有一堆花哨的造型选项,如圆形与矩形关闭按钮,渐变与纯色,以及浅色与深色通知。但是,只有一个顺序管理器。
  • 维基有javadocs链接和入门文档。
  • 没有外部依赖(我想?)。

JCarrierPigeon

  • 很轻巧。看着罐子,它只有六个班级。
  • 取决于“时间框架”库。
  • 该网站显示它可以在效果中做一些滑动,但我不认为它会褪色或其他类型的动画。

JTelegraph

  • 需要在类路径中构建JCarrierPigeon和“Timing Framework”
  • 项目中包含数十个漂亮的图标。我不确定这些是如何获得许可的,但如果您没有自己的许可,它们可能会很有用。
  • 据我所知,它不包括比JCarrierPigeon中提供的功能更多的功能。它主要包括一堆内置图标和不同的API。

我无法发布这些链接,因为我没有足够的声誉,但他们很容易在互联网上找到。 现在我会 尝试 与上述相比,客观地评估我自己的图书馆。请记住,这个列表有点广泛,因为我比其他人更了解我的项目。如果有什么我遗失的,请告诉我。

JCommunique

  • 很多功能。就通知而言,有TextNotifications,IconNotifications,AcceptNotifications和ProgressNotifications(显示进度条)。 NotificationManagers处理通知显示的方式。这些包括SimpleManager,QueueManager(向下滚动旧通知以显示新通知),SlideManager(将通知滑动到位置)和SequenceManager(仅在前一个消失时显示通知)。
  • 比较大。我认为它总共约有2,500行。
  • 有一个wiki有很多例子。
  • 通知看起来有点简单,因为它们只能是一种纯色。 Twinkle在这方面获胜;它的通知周围有渐变和轮廓。
  • 少数内置主题。在写作时,这些包括黑暗,光明和浅绿色。您也可以添加自己的。
  • 没有Java以外的外部依赖项。

4
2018-05-06 13:41



我已经删除了这个,因为你投入了大量的工作。但是,问题是我们的标准偏离主题,因此它现在已经关闭。 - Martijn Pieters♦


我不知道Java库是否抽象出所有特定于操作系统的桌面通知。但是如果你知道,你只能使用Ubuntu(也许是有限数量的其他操作系统),你可以创建一个自己的 Interface 并为特定的操作系统实现它。

  • Ubuntu:你可以访问 /usr/bin/notify-send 通过 Runtime 喜欢这个: usr/bin/notify-send -t 30000 "Text1" "Text2" -i /path/to/48x48.png
  • Mac OSX: Java Growl API

对于JAVA实现,您可以查看 爵士乐 要么 Mylyn的 (看到 Java桌面通知)。


3
2017-07-12 13:37



Ubuntu不是问题,我可以在那里使用java-gnome项目。 Windows是问题(暂时无视Mac)。我想我会建议您创建界面,并为ubuntu和Mylyn / Jazz for Windows实现notify-osd。如果我有结果,我会在这里更新。 - W. Goeman
你能详细说明一下吗? Runtime?它是在java中调用CLI命令的方法吗? - prometheuspk
恩,那就对了。看到 docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html - Thor