Chinaunix首页 | 论坛 | 博客
  • 博客访问: 521138
  • 博文数量: 147
  • 博客积分: 10105
  • 博客等级: 上将
  • 技术积分: 1594
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-14 10:18
文章分类

全部博文(147)

文章存档

2011年(4)

2010年(4)

2009年(6)

2008年(5)

2007年(40)

2006年(88)

我的朋友

分类: Java

2007-04-11 11:24:05


import里从左边的tree里table拖到右边的,让它显不在右边功能的实现如下
首先创建Tree太简单了,略了,主要介绍拖拉功能
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.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
.....
Transfer[] types = new Transfer[] {TextTransfer.getInstance()};//获取一下文本移动的实例
  int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
  // create tree object
  final DragSource source = new DragSource(tree, operations);//创建一个DragSource对象,将tree与操作方式作为参数
  source.setTransfer(types);//将文本移动的实例set到DragSource对象中
  final TreeItem[] dragSourceItem = new TreeItem[1];
  source.addDragListener(new DragSourceListener()
  {
   public void dragStart(DragSourceEvent event)
   {
    TreeItem[] selection = tree.getSelection();
    if (selection.length > 0 && selection[0].getItemCount() == 0)
    {
     event.doit = true;
     dragSourceItem[0] = selection[0];
     itemTableTitle = dragSourceItem[0].getText();
     System.out.println(itemTableTitle);
    }
    else
    {
     event.doit = false;
    }
   };
   public void dragSetData(DragSourceEvent event)
   {
    event.data = dragSourceItem[0].getText(); // save information
   }
   public void dragFinished(DragSourceEvent event)
   {
   }
  });
  table = new Table(composite2, SWT.FULL_SELECTION | SWT.BORDER);
  table.setLinesVisible(true);
  table.setHeaderVisible(true);
  table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
  // target————table 
  DropTarget target = new DropTarget(table, operations);
  target.setTransfer(types);
  target.addDropListener(new DropTargetAdapter()
  {
   public void dragOver(DropTargetEvent event)
   {
    event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;
   }
   // put down mouse()
   public void drop(DropTargetEvent event)
   {
    if (event.data == null)
    {
     event.detail = DND.DROP_NONE;
     return;
    }
    String text = (String) event.data;
    Point pt = table.getDisplay().map(null, table, event.x, event.y);
    sumCoulumnWidth = 0;
    sumhoorizontal = table.getHorizontalBar().getSelection() + pt.x;
    for (int column = 0; column < table.getColumnCount(); column++)
    {
     sumCoulumnWidth = sumCoulumnWidth + table.getColumn(column).getWidth();
     if (sumCoulumnWidth >= sumhoorizontal)
     {
      table.getColumn(column).setText(text);
      break;
     }
    }
   }
  });
..................
  mouse Right event
  table.addMouseListener(new MouseAdapter()
  {
   public void mouseDown(MouseEvent event)
   {
//     Right click
    if (event.button == 3)
    {
     Point pt = new Point(event.x, event.y);
     sumCoulumnWidth = 0;
     sumhoorizontal = table.getHorizontalBar().getSelection() + pt.x;
     for (int column = 0; column < table.getColumnCount(); column++)
     {
      sumCoulumnWidth = sumCoulumnWidth + table.getColumn(column).getWidth();
      if (sumCoulumnWidth >= sumhoorizontal)
      {
       if (table.getColumn(column).getText() != null && !table.getColumn(column).getText().equals(""))
       {
        final int selected = column;
        Menu menu = getMenu();
        if (menu == null)
        {
         menu = new Menu(table);
        }
        MenuItem item = new MenuItem(menu, SWT.PUSH);
        item.setText("Clear column title");
        item.addSelectionListener(new SelectionListener()
        {
         public void widgetDefaultSelected(SelectionEvent e)
         {
         }
         public void widgetSelected(SelectionEvent e)
         {
          table.getColumn(selected).setText("");
         }
        });
        Point showPt = new Point(event.x, event.y);
        pt = table.toDisplay(pt);
        menu.setLocation(pt.x, pt.y);
        menu.setVisible(true);
       }
       break;
      }
     }
    }
   }
  });
阅读(1292) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~