找出如何在屏幕右上方显示其中一个小通知气泡消息,请在下面回答。如何在IntelliJ中显示通知?
7
A
回答
11
原来,您必须制作一个NotificationGroup实例,然后使用它来进行通知,并将通知和项目传递给Notifications.Bus.notify()。
public class VoiceApplicationComponentImpl implements ApplicationComponent, VoiceApplicationComponent {
...
public static final NotificationGroup GROUP_DISPLAY_ID_INFO =
new NotificationGroup("My notification group",
NotificationDisplayType.BALLOON, true);
...
void showMyMessage(String message) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
Notification notification = GROUP_DISPLAY_ID_INFO.createNotification(message, NotificationType.ERROR);
Project[] projects = ProjectManager.getInstance().getOpenProjects();
Notifications.Bus.notify(notification, projects[0]);
}
});
}
注意:您可能有更好的方式来获得当前的项目,现在我只是假设有一个打开的项目。这意味着我的方法在启动时不起作用(项目数组为空)。
另一个说明:你可能不需要用invokeLater包装,但我做了,因为我在不同的线程中调用showMyMessage。
0
这样会更好!
StatusBar statusBar = WindowManager.getInstance()
.getStatusBar(DataKeys.PROJECT.getData(actionEvent.getDataContext()));
JBPopupFactory.getInstance()
.createHtmlTextBalloonBuilder(htmlText, messageType, null)
.setFadeoutTime(7500)
.createBalloon()
.show(RelativePoint.getCenterOf(statusBar.getComponent()),
Balloon.Position.atRight);
相关问题
- 1. 如何在IOS中显示通知
- 2. 如何在Android中显示此通知?
- 3. 如何在iWatch中显示通知?
- 4. 如何在asp.net中显示通知
- 5. 如何在android中显示通知?
- 6. 如何在Windows通知栏中显示弹出通知
- 7. 在android中显示通知
- 8. 在MirrorLink中显示通知
- 9. 如何在通知显示在后台之前处理通知?
- 10. 如何在IntelliJ中显示水平线?
- 11. 如何在tizen上显示通知
- 12. 如何在科尔多瓦的通知区域显示通知?
- 13. 显示通知
- 14. 如何在状态栏中显示图标而不在通知抽屉中显示通知?
- 15. 如何在手表套件中显示通知,其中iPhone应用程序已显示通知
- 16. Intellij IDEA中的汉字 - 如何显示?
- 17. 在Android中,如何获取给定通知ID的当前显示通知?
- 18. 如何在win 8中显示吐司通知或弹出通知?
- 19. 如何显示通知抽屉中不存在的应用内通知Snapchat
- 20. 如何在离子应用程序中显示图片中显示的通知
- 21. 安卓:如何显示通知文本
- 22. 如何显示本地通知 - Worklight
- 23. 如何关闭突出显示通知?
- 24. 如何用按钮显示大通知?
- 25. 如何显示iOS 5通知?
- 26. 如何显示抬头通知android
- 27. 如何让QWebView显示桌面通知?
- 28. 如何创建“显示通知”checkboxpreferene
- 29. 如何显示通知插件更新
- 30. 如何使用C#显示通知?
是否有人知道为什么'ApplicationManager.getApplication()invokeLater'是必要的[商务部](http://www.jetbrains.org/ intellij/sdk/docs/user_interface_components/notifications.html)没有提到它 –
@ robin.thoni invokeLater()是一个swing方法,它允许在事件分派线程下堆叠ui任务,这是唯一允许执行的线程ui任务...这与swing比intellij api更相关,尽管...不应该在文档中。 – ALTN
@Verdagon您应该使用Project project = e.getData(LangDataKeys.PROJECT)来获取您当前的项目参考,否则当多个项目打开时,通知有风险显示在错误的项目下。 e是您从行动课程中获得的AnActionEvent。还要确保你调用invokeLater可运行的e.getData(LangDataKeys.PROJECT),否则将在运行时抛出异常。出于某种原因,intellij不允许在事件派发线程下调用getData。 – ALTN