SWT TrayItem.setImage在Mac状态栏中无法正确缩放

|| 在我的跨平台SWT Java应用程序上,我使用TrayItem的setImages()函数设置停靠栏和状态栏图标。图标是128x128透明的PNG。状态和任务栏图标在Windows和Linux发行版上都经过适当裁剪,但是在Mac上,我遇到了一些问题,例如,状态栏图标在两侧都带有奇怪的填充,如下所示: 对于Mac以外的所有其他平台都可以使用它,我感到很奇怪。例如,这是相同的状态栏图标,而我的Linux机器上没有问题: 有谁知道如何防止Mac上的这种额外填充?     
已邀请:
        我在SWT可可粉来源中发现了问题。
public void setImage (Image image) {
    checkWidget ();
    if (image != null && image.isDisposed ()) error (SWT.ERROR_INVALID_ARGUMENT);
    super.setImage (image);
    double /*float*/ width = 0;
    if (image == null) {
        view.setImage (null);
    } else {
        /*
         * Feature in Cocoa.  If the NSImage object being set into the view is
         * the same NSImage object that is already there then the new image is
         * not taken.  This results in the view\'s image not changing even if the
         * NSImage object\'s content has changed since it was last set into the
         * view.  The workaround is to temporarily set the view\'s image to null
         * so that the new image will then be taken.
         */
        NSImage current = view.image ();
        if (current != null && current.id == image.handle.id) {
            view.setImage (null);
        }
        view.setImage (image.handle);
        if (visible) {
            width = image.handle.size ().width + BORDER;
        }
    }
    item.setLength (width);
}
问题出在
width = image.handle.size ().width + BORDER;
行上,它仅获取图像的纯尺寸(在您的情况下为128 px)。我没有找到任何合适的解决方法(我看到您在SWT bugzilla上发布了错误报告)。 因此(目前)避免此错误的唯一方法是缩小托盘图像。     

要回复问题请先登录注册