关于JAVA制作桌面挂架的一些问题

    这个问题之前一直在网上找答案,还是找不到,在这里冒昧的请教一下,就是关于用     java显示一张异形图片,但是不显示承载这个图片的容器窗体,看上去就给人一种只显示了一张图片的感觉,之前想过用JFrame窗体显示,之后让JFrane透明,但是这样的话,上面的图片也透明了,之后看网上有人用了一个com.sun.awt.AWTUtilities的类去实现,不过这个方法貌似也不行,能问一下有什么办法去实现这个问题吗?

用swt

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Shell;
import org.sf.feeling.swt.win32.extension.graphics.ImageRegion;
import org.sf.feeling.swt.win32.extension.shell.listener.WindowMoveListener;
import org.sf.feeling.swt.win32.extension.widgets.CMenu;
import org.sf.feeling.swt.win32.extension.widgets.CMenuItem;
import org.sf.feeling.swt.win32.extension.widgets.PopupMenu;
import org.sf.feeling.swt.win32.extension.widgets.listener.MenuAdapter;
import org.sf.feeling.swt.win32.extension.widgets.theme.ThemeRender;
import org.sf.feeling.swt.win32.extension.widgets.theme.VS2005ThemeRender;
import org.sf.feeling.swt.win32.internal.extension.util.ImageCache;

public class CustomShapedWindow {
/**
* @param args
*/
public static void main(String[] args) {
new CustomShapedWindow();
}

public CustomShapedWindow() {
    super();
    Display display = new Display();
    Shell mainShell = new Shell(display);
    final Shell shell = new Shell(mainShell, SWT.NO_TRIM);
    Image image = ImageCache.getImage("/cup.bmp");
    shell.setSize(image.getImageData().width, image.getImageData().height);
    shell.setBackgroundImage(image);
    shell.setRegion(ImageRegion.calculateControlGraphicsPath(image, image
            .getImageData().getPixel(0, 0)));
    WindowMoveListener l = new WindowMoveListener(shell, false);
    shell.addListener(SWT.MouseDown, l);
    shell.addListener(SWT.MouseUp, l);
    shell.addListener(SWT.MouseMove, l);
    shell.setLayout(new GridLayout());
    CMenu menu = new CMenu();
    CMenuItem item = new CMenuItem("&Hide", SWT.NONE);
    menu.addItem(item);
    final ThemeRender theme = new VS2005ThemeRender();
    final PopupMenu popupMenu = new PopupMenu(shell, theme);
    popupMenu.setMenu(menu);

    item.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent arg0) {
            shell.setVisible(false);
        }
    });
    menu.addMenuListener(new MenuAdapter() {

        public void menuShown(Event e) {
            popupMenu.setTheme(theme);
            popupMenu.refresh();

        }

    });

    Monitor primary = Display.getDefault().getPrimaryMonitor();
    Rectangle bounds = primary.getBounds();
    Rectangle rect = shell.getBounds();
    int x = bounds.x + (bounds.width - rect.width) / 2;
    int y = bounds.y + (bounds.height - rect.height) / 2;
    shell.setLocation(x, y);
    shell.setVisible(true);
    while (!mainShell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

}