网站地图
  
  高级搜索
  首页   技术论坛   博客   产品中心   资源中心   银弹在线   商城  





DND应用代码    
#1楼
给作者发送短消息 给作者发送短消息 实名会员 商务会员 
查看用户其他信息
总分 2909 分
财富 3229 goCom币
威望 54
排名 第 79 名
段位 新手必读

以下是个人从网上收藏的一些代码,供初学者应用

package dragdrop;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
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.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

public class TextTransferDragDrop {
 private static Image image  = null;
 private Tree tree;
 private Table table;
 public static void main(String[] args){
  new TextTransferDragDrop().showMainPane();
 }
 
 private void showMainPane(){
  Display display = new Display();
  image = new Image(display,"icons/browser.gif");
  Shell shell = new Shell(display,SWT.SHELL_TRIM);
  shell.setText("Test DND");
  shell.setSize(400,300);
  shell.setImage(image);
  
  shell.setLayout(new GridLayout(1,false));
  
  createSashForm(shell);
  
  addDragSource();
  addDropTarget();
  
  shell.setVisible(true);
  while(!shell.isDisposed())
   if(!display.readAndDispatch())
    display.sleep();
  image.dispose();
  display.dispose();
 }
 
 private SashForm createSashForm(Composite parent){
  SashForm form = new SashForm(parent,SWT.NONE);
  form.setLayoutData(new GridData(GridData.FILL_BOTH));
  tree = createTree(form);
  table = createTable(form);
  form.setWeights(new int[]{1,3});
  return form;
 }
 
 private Tree createTree(Composite parent){
  Tree tree = new Tree(parent,SWT.SINGLE);
  tree.setLayoutData(new GridData(GridData.FILL_BOTH));
  for(int i = 0;i<4;i++){
   TreeItem item = new TreeItem(tree,SWT.NONE);
   item.setText("item"+" "+i);
   for(int j = 0;j<4;j++){
    TreeItem item2 = new TreeItem(item,SWT.NONE);
    item2.setText("subItem "+j);
   }
  }
  return tree;
 }
 
 private Table createTable(Composite parent){
  Table table = new Table(parent,SWT.SINGLE);
  table.setLinesVisible(true);
  table.setHeaderVisible(true);
  table.setLayoutData(new GridData(GridData.FILL_BOTH));
  for(int i = 0;i<2;i++){
   TableColumn column = new TableColumn(table,SWT.NONE);
   column.setText("column "+i);
   column.setWidth(60);
  }
  for(int i =0;i<4;i++){
   TableItem item = new TableItem(table,SWT.NONE);
   item.setText(new String[]{"item "+i+" 1","item "+i+" 2"});
  }
  return table;
 }

 private void addDragSource()
 {
  DragSource dragSource = new DragSource(tree,DND.DROP_COPY);
  dragSource.setTransfer(new Transfer[]{TextTransfer.getInstance()});
  dragSource.addDragListener(new DragSourceListener(){

   /*
    * when drag finished
    * this used to do something,such as delete the select item
    * dispose some system resource
    * (non-Javadoc)
    * @see org.eclipse.swt.dnd.DragSourceListener#dragFinished(org.eclipse.swt.dnd.DragSourceEvent)
    */
   public void dragFinished(DragSourceEvent arg0) {
    System.out.println("drag finished");
   }

   /*
    * this used to set drag data
    * (non-Javadoc)
    * @see org.eclipse.swt.dnd.DragSourceListener#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
    */
   public void dragSetData(DragSourceEvent arg0) {
    arg0.data = tree.getSelection()[0].getText();
   }

   /*
    * this used to execute before drag
    * such as make the drag no effect
    * (non-Javadoc)
    * @see org.eclipse.swt.dnd.DragSourceListener#dragStart(org.eclipse.swt.dnd.DragSourceEvent)
    */
   public void dragStart(DragSourceEvent arg0) {
    System.out.println("start drag");
   }
   
  });
 }
 
 private void addDropTarget()
 {
  DropTarget target = new DropTarget(table,DND.DROP_COPY);
  target.setTransfer(new Transfer[]{TextTransfer.getInstance()});
  target.addDropListener(new DropTargetListener(){

   /*
    * when drag enter,execute this method
    * this method can be used to set event type use event.detail
    * the type used to set the target's receive type
    * (non-Javadoc)
    * @see org.eclipse.swt.dnd.DropTargetListener#dragEnter(org.eclipse.swt.dnd.DropTargetEvent)
    */
   public void dragEnter(DropTargetEvent event) {
    event.detail = DND.DROP_COPY;
   }

   /*
    * when drag leave ,execute this method
    * (non-Javadoc)
    * @see org.eclipse.swt.dnd.DropTargetListener#dragLeave(org.eclipse.swt.dnd.DropTargetEvent)
    */
   public void dragLeave(DropTargetEvent arg0) {
    System.out.println("leave");
   }

   public void dragOperationChanged(DropTargetEvent arg0) {
    
   }

   public void dragOver(DropTargetEvent arg0) {
    
   }

   public void drop(DropTargetEvent arg0) {
    TableItem item2 = new TableItem(table,SWT.NONE);
    item2.setText(arg0.data.toString());
    table.layout();
   }

   public void dropAccept(DropTargetEvent arg0) {
    
   }
   
  });
 }
}

 

 




发表回复
账号用户名   密码   登录
内容:url email imgsrc image code quote
范例 Example
bold italic underline linethrough   


 [更多...]