如何从Java呈现精美的桌面通知?

时间:2011-06-27 21:26:48

标签: notifications java

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

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

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

3 个答案:

答案 0 :(得分:6)

无耻的插件:我刚刚发布了一个名为Twinkle的项目,它几乎是Java Swing的Growl。您可以试用demo

答案 1 :(得分:4)

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

  • Ubuntu:您可以/usr/bin/notify-send通过Runtime访问usr/bin/notify-send -t 30000 "Text1" "Text2" -i /path/to/48x48.png:{{1}}
  • Mac OSX:Java Growl API

对于JAVA实施,您可以查看JazzMylyn(请参阅Java Desktop Notifications)。

答案 2 :(得分:4)

您可以使用JCommunique进行跨平台Java桌面通知。这是一个简短的演示,改编自维基上的examples

// 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行。
  • 有许多花哨的造型选项,如圆形与矩形关闭按钮,渐变与纯色,以及浅色与深色通知。但是,只有一个顺序管理器。
  • wiki包含javadocs链接和入门文档。
  • 没有外部依赖(我认为?)。

JCarrierPigeon

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

JTelegraph

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

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

JCommunique

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