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) |