如何使气球通知中的 URL 可点击?

How to make a URL in a balloon notification clickable?

我正在创建一个简单的 IntelliJ 插件,它允许直接从 IDE 创建新的 Pastebin 粘贴。

当粘贴成功发布到 Pastebin 时,我想显示气球通知。

目前通知显示如下:

final Response<String> postResult = Constants.PASTEBIN.post(paste);
        NotificationGroup balloonNotifications = new NotificationGroup("Notification group", NotificationDisplayType.BALLOON, true);
        if (postResult.hasError()) {
            //Display error notification
        } else {
            //Display success notification
            Notification success = balloonNotifications.createNotification("Successful Paste", "<a href=\"" + postResult.get() + "\">Paste</a> successfully posted!", NotificationType.INFORMATION, null);
            Notifications.Bus.notify(success, project);
        }

现在,此气球通知包含新创建的粘贴的 URL,但遗憾的是单击它不会在浏览器中打开 link。如何实现?

带有 URL 的气球通知应该可以点击:

经过一番搜索,我自己找到了答案。其实并不难。

如果我按如下方式实例化通知,则 link 可按要求点击。

Notification success = balloonNotifications.createNotification("<html>Successful Paste", "<a href=\"" + postResult.get() + "\" target=\"blank\">Paste</a> successfully posted!</html>", NotificationType.INFORMATION, (notification, hyperlinkEvent) -> {
            if (hyperlinkEvent.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                BrowserUtil.browse(hyperlinkEvent.getURL());
            }
        });

注意:事件日志中的link现在也可以点击了,这也很有用。

有 NotificationListener 在通知中打开 url:com.intellij.notification.UrlOpeningListener

所以你可以这样写:

Notification success = balloonNotifications.createNotification(
            "<html>Successful Paste", "<a href=\"" + postResult.get() + "\" target=\"blank\">Paste</a> successfully posted!</html>",
            NotificationType.INFORMATION, new NotificationListener.UrlOpeningListener(true));