SWT拖放自定义控件显示在光标旁边

时间:2012-02-10 11:40:37

标签: java user-interface drag-and-drop swt

在SWT中拖动时,如何在光标旁边显示一些自定义控件或小部件?

像按钮或树或表不是图像。

如果不可能 - 我如何将这样的按钮渲染成图像?

2 个答案:

答案 0 :(得分:2)

我找到了使用GC(canvas)类将任意Control(widget)渲染到Image中的方法。方法如下:

dragSource.addDragListener(new DragSourceListener() {
    @Override
    public void dragStart(DragSourceEvent dragSourceEvent) {
        // getting control widget - Composite in this case
        Composite composite = (Composite) ((DragSource) dragSourceEvent.getSource()).getControl();
        // Getting dimensions of this widget
        Point compositeSize = composite.getSize();
        // creating new GC
        GC gc = new GC(composite);
        // Creating new Image
        Image image = new Image(Display.getCurrent(),compositeSize.x,compositeSize.y);
        // Rendering widget to image
        gc.copyArea(image,0,0);
        // Setting widget to DnD image
        dragSourceEvent.image = image;
    }
... other overriden methods ...
}

答案 1 :(得分:0)

您可以使用跟随鼠标位置的未修饰Shell,并且在该Shell中具有您想要显示的窗口小部件。