Java 从ProgressMonitorDialog更改TrayIcon工具提示

Java 从ProgressMonitorDialog更改TrayIcon工具提示,java,eclipse,eclipse-rcp,rcp,Java,Eclipse,Eclipse Rcp,Rcp,我使用的是Eclipse RCP trayitem,它被描述为 现在的要求不仅是在工具提示中显示应用程序的名称,还要在执行长时间操作时显示百分比 我知道trayitem属性是来自ApplicationWorkbenchWindowAdvisor的私有属性,所以我添加了一个getter和setter方法 唯一缺少的是从myProgressMonitorDialog实例访问trayitem实例的可能性 你能告诉我,你将如何解决这个难题吗? 谢谢,因为您可以从任何窗口围绕系统托盘构建托盘: final

我使用的是Eclipse RCP trayitem,它被描述为

现在的要求不仅是在工具提示中显示应用程序的名称,还要在执行长时间操作时显示百分比

我知道trayitem属性是来自
ApplicationWorkbenchWindowAdvisor
的私有属性,所以我添加了一个getter和setter方法

唯一缺少的是从my
ProgressMonitorDialog
实例访问trayitem实例的可能性

你能告诉我,你将如何解决这个难题吗?

谢谢

,因为您可以从任何窗口围绕
系统托盘
构建
托盘

final Tray tray = window.getShell().getDisplay().getSystemTray();
TrayItem trayItem = new TrayItem(tray, SWT.NONE);
,是否必须从
ApplicationWorkbenchWindowVisor
访问该
TrayItem
实例

你可以把它放在一个更容易访问的类中,甚至在你需要的地方和时候构建一个类


说到在执行长时间操作时显示百分比,我只想提到最新的任务图标(不是系统托盘,而是相关的图标,它们现在可以提供良好的状态指示器)。有关示例,请参见

  • 任务项覆盖图像
新的API
TaskItem#setOverlayImage(Image)
允许客户端设置要显示在任务栏中应用程序按钮顶部的图像

  • 任务项覆盖文本
新的API
TaskItem#SetOverlyText(String)
允许客户端设置短文本,以显示在任务栏的应用程序按钮顶部

  • 任务项进度
新的API
TaskItem#setProgress(int)
TaskItem#setProgressState(int)
允许客户端在任务栏的应用程序按钮中显示进度指示


谢谢!据我所知,在ProgressMonitorDialog类/线程中,我没有显示或窗口访问权限……我还试图用这个类打开一个messagebox,但由于这个原因失败了。还是我做错了什么?@Raven:我不明白:
对话框
是一个
窗口
getShell()
方法应该可用。原因:org.eclipse.swt.swt异常:线程访问无效这是我在访问shell/display后收到的错误消息。我正在使用本教程中的ProgressDialog:@Raven,当然,您需要在GUI线程中执行它。看,例如,是的,这是有效的,只是我现在得到了两个trayicons:-(.一个已经存在的trayicons,加上在漫长的操作中的一个。我认为getTrayIcon()会得到一个,而不会创建另一个trayicons。。。