关于如何使用 SWT 获取系统托盘 (Tray) 或其上的项目 (TrayItem) 的位置的任何想法?从显示器获取边界只会给我整个屏幕的边界。即
item.getDisplay().getBounds();
会在我的 Windows 机器上给我 (0, 0, 1024, 1024)。
我还想知道系统托盘的位置(左、右、上、下),但大概可以猜测给定的位置。 这就是我可以在系统托盘附近弹出消息的全部内容。
这是此 post 的副本但我想提供赏金(因此控制我认为正确的答案)。
最佳答案
如果您只想在托盘项目附近显示一个 shell 来响应用户事件(就像我的情况一样)。您可以在托盘项目上触发事件时获取指针位置:
trayItem.addSelectionListener (new SelectionListener () {
@Override public void widgetDefaultSelected (SelectionEvent aEvent) {
widgetSelected (aEvent);
}
@Override public void widgetSelected (SelectionEvent aEvent) {
if (mWindow.isVisible ()) {
Shell wnd = mWindow;
mWindow = new Shell (mDisplay);
wnd.close ();
}
else {
mWindow.setLocation (mDisplay.getCursorLocation ());
mWindow.open ();
}
}
});
您可以找到完整的源代码here .
如果您想通知一些其他事件(不是由用户输入生成的),我想您最好的选择是使用工具提示,正如 Sandman 在之前的回答中指出的那样。
祝你好运!!!
关于java - 如何获取 SWT Tray 或 TrayItem 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452565/