java - 如何获取 SWT Tray 或 TrayItem 位置

标签 java eclipse swt eclipse-rcp jface

关于如何使用 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/

相关文章:

Java Selenium + 2Captcha + 提交表单

java - 即使启动新线程,SWT UI 也会挂起

java - RestEasy : org. codehaus.jackson.map.JsonMappingException : Can not deserialize instance of java. util.ArrayList out of START_OBJECT token(..)

Java - 从文件中反序列化整个 json 列表

java - Selenium Webdriver 中的下拉菜单和切换到新窗口在 Firefox 中不起作用

eclipse - org.springframework.beans.factory.BeanCreationException : Error creating bean with name

java - 在Eclipse Luna中安装STS(Spring)时出错

java - SWT StyledText - 监听 clientArea 变化

java - SWT - 灰显并禁用当前 shell

java - Jdeveloper 11.1.1.4.0 11c 的 Git 扩展