SWT перетаскивание пользовательского элемента управления отображается рядом с курсором - PullRequest
1 голос
/ 10 февраля 2012

Как отобразить некоторые пользовательские элементы управления или виджеты рядом с курсором при перетаскивании в SWT?

Мне нравится кнопка или дерево или таблица, а не изображение.

Если это невозможно - как я могу отобразить такую ​​кнопку в изображении?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Я нашел способ рендеринга произвольного элемента управления (виджета) в изображение с помощью класса GC (холст).Вот как:

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 ...
}
0 голосов
/ 10 февраля 2012

Вы можете использовать неокрашенную оболочку, которая следует за положением мыши, и в этой оболочке есть виджет (ы), которые вы хотите отобразить.

...