标签:
SWT 托拉拽主要由3个部分组成
DragSource - 拖拉的来源封装在这个类当中
DropTarget - 粘贴的对象封装在这个类当中
Transfer - 他们之间传输的中介就靠这个
下面来看一下例子
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.DropTargetListener;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class DragAndDrog extends ApplicationWindow {
private Text dropText;
private Text dragText;
/**
* Create the application window.
*/
public DragAndDrog() {
super(null);
createActions();
addToolBar(SWT.FLAT | SWT.WRAP);
addMenuBar();
addStatusLine();
}
/**
* Create contents of the application window.
* @param parent
*/
@Override
protected Control createContents(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
dropText = new Text(container, SWT.BORDER);
dropText.setBounds(46, 48, 73, 21);
DropTarget target = new DropTarget(dropText,DND.DROP_MOVE);
target.setTransfer(new Transfer[]{TextTransfer.getInstance()});
target.addDropListener(new DropTargetListener() {
@Override
public void dropAccept(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void drop(DropTargetEvent event) {
// TODO Auto-generated method stub
dropText.setText(String.valueOf(event.data));
}
@Override
public void dragOver(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragOperationChanged(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragLeave(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragEnter(DropTargetEvent event) {
// TODO Auto-generated method stub
}
});
dragText = new Text(container, SWT.BORDER);
dragText.setBounds(198, 48, 73, 21);
DragSource dragSource = new DragSource(dragText, DND.DROP_MOVE);
dragSource.setTransfer(new Transfer[]{TextTransfer.getInstance()});
dragSource.addDragListener(new DragSourceListener() {
@Override
public void dragStart(DragSourceEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragSetData(DragSourceEvent event) {
event.data = dragText.getText();
}
@Override
public void dragFinished(DragSourceEvent event) {
// TODO Auto-generated method stub
}
});
return container;
}
/**
* Create the actions.
*/
private void createActions() {
// Create the actions
}
/**
* Create the menu manager.
* @return the menu manager
*/
@Override
protected MenuManager createMenuManager() {
MenuManager menuManager = new MenuManager("menu");
return menuManager;
}
/**
* Create the toolbar manager.
* @return the toolbar manager
*/
@Override
protected ToolBarManager createToolBarManager(int style) {
ToolBarManager toolBarManager = new ToolBarManager(style);
return toolBarManager;
}
/**
* Create the status line manager.
* @return the status line manager
*/
@Override
protected StatusLineManager createStatusLineManager() {
StatusLineManager statusLineManager = new StatusLineManager();
return statusLineManager;
}
/**
* Launch the application.
* @param args
*/
public static void main(String args[]) {
try {
DragAndDrog window = new DragAndDrog();
window.setBlockOnOpen(true);
window.open();
Display.getCurrent().dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Configure the shell.
* @param newShell
*/
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("New Application");
}
/**
* Return the initial size of the window.
*/
@Override
protected Point getInitialSize() {
return new Point(450, 300);
}
}
SWT DragSource 和 DropTarget 托拉拽
标签:
原文地址:http://www.cnblogs.com/oscar1987121/p/5216498.html