Java && C#

          要學(xué)得東西很多,但我們的時間卻不是很多!
          數(shù)據(jù)加載中……
          SWT 中 Tree/TreeViewer的鼠標(biāo)拖動方法
          ?? ?public void dndBuilder() {
          ?? ??? ?Transfer[] type = new Transfer[] { TextTransfer.getInstance() };
          ?? ??? ?int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK
          ?? ??? ??? ??? ?| DND.DROP_NONE;
          ?? ??? ?final DragSource source = new DragSource(tree, operations);
          ?? ??? ?source.setTransfer(type);
          ?? ??? ?final TreeItem[] dragSourceItem = new TreeItem[1];
          ?? ??? ?source.addDragListener(new DragSourceListener() {
          ?? ??? ??? ?public void dragStart(DragSourceEvent event) {
          ?? ??? ??? ??? ?TreeItem[] selection = tree.getSelection();
          ?? ??? ??? ??? ?if (selection.length > 0) {
          ?? ??? ??? ??? ??? ?event.doit = true;
          ?? ??? ??? ??? ??? ?dragSourceItem[0] = selection[0];
          ?? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ?event.doit = false;
          ?? ??? ??? ??? ?}
          ?? ??? ??? ?};

          ?? ??? ??? ?public void dragSetData(DragSourceEvent event) {
          ?? ??? ??? ??? ?event.data = dragSourceItem[0].getText();
          ?? ??? ??? ?}

          ?? ??? ??? ?public void dragFinished(DragSourceEvent event) {
          ?? ??? ??? ??? ?if (event.detail == DND.DROP_MOVE) {
          ?? ??? ??? ??? ??? ?dragSourceItem[0].dispose();
          ?? ??? ??? ??? ??? ?dragSourceItem[0] = null;
          ?? ??? ??? ??? ?}
          ?? ??? ??? ?}
          ?? ??? ?});

          ?? ??? ?DropTarget target = new DropTarget(tree, operations);
          ?? ??? ?target.setTransfer(type);
          ?? ??? ?target.addDropListener(new DropTargetAdapter() {

          ?? ??? ??? ?private TreeItem initTreeItem(TreeItem sitem, TreeItem ditem) {
          ?? ??? ??? ??? ?ditem.setText(sitem.getText());
          ?? ??? ??? ??? ?ditem.setData(sitem.getData());
          ?? ??? ??? ??? ?for (int i = 0; i < sitem.getItemCount(); i++) {
          ?? ??? ??? ??? ??? ?TreeItem subitem = new TreeItem(ditem, SWT.NONE);
          ?? ??? ??? ??? ??? ?try {
          ?? ??? ??? ??? ??? ??? ?subitem = initTreeItem(sitem.getItem(i), subitem);
          ?? ??? ??? ??? ??? ?} catch (Exception e) {
          ?? ??? ??? ??? ??? ??? ?// e.printStackTrace();
          ?? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ?}
          ?? ??? ??? ??? ?return ditem;
          ?? ??? ??? ?}

          ?? ??? ??? ?private boolean checkValidate(TreeItem sitem, TreeItem ditem) {
          ?? ??? ??? ??? ?if (ditem.equals(sitem))
          ?? ??? ??? ??? ??? ?return false;
          ?? ??? ??? ??? ?TreeItem titem = ditem.getParentItem();
          ?? ??? ??? ??? ?while (titem != null) {
          ?? ??? ??? ??? ??? ?if (sitem.equals(titem))
          ?? ??? ??? ??? ??? ??? ?return false;
          ?? ??? ??? ??? ??? ?titem = titem.getParentItem();
          ?? ??? ??? ??? ?}
          ?? ??? ??? ??? ?return true;
          ?? ??? ??? ?}

          ?? ??? ??? ?public void dragOver(DropTargetEvent event) {
          ?? ??? ??? ??? ?event.feedback = DND.FEEDBACK_NONE | DND.FEEDBACK_SCROLL;
          ?? ??? ??? ??? ?if (event.item != null) {
          ?? ??? ??? ??? ??? ?TreeItem item = (TreeItem) event.item;
          ?? ??? ??? ??? ??? ?if (!checkValidate(dragSourceItem[0], item)) {
          ?? ??? ??? ??? ??? ??? ?event.detail = DND.DROP_NONE;
          ?? ??? ??? ??? ??? ??? ?return;
          ?? ??? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ??? ?event.detail = DND.DROP_MOVE;
          ?? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ?Point pt = shell.getDisplay().map(null, tree, event.x,
          ?? ??? ??? ??? ??? ??? ??? ?event.y);
          ?? ??? ??? ??? ??? ?Rectangle bounds = item.getBounds();
          ?? ??? ??? ??? ??? ?if (pt.y < bounds.y + bounds.height / 3) {
          ?? ??? ??? ??? ??? ??? ?event.feedback |= DND.FEEDBACK_INSERT_BEFORE;
          ?? ??? ??? ??? ??? ?} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
          ?? ??? ??? ??? ??? ??? ?event.feedback |= DND.FEEDBACK_INSERT_AFTER;
          ?? ??? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ??? ?event.feedback |= DND.FEEDBACK_SELECT;
          ?? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ?}
          ?? ??? ??? ?}

          ?? ??? ??? ?public void drop(DropTargetEvent event) {
          ?? ??? ??? ??? ?if (event.data == null) {
          ?? ??? ??? ??? ??? ?event.detail = DND.DROP_NONE;
          ?? ??? ??? ??? ??? ?return;
          ?? ??? ??? ??? ?}
          ?? ??? ??? ??? ?if (event.item == null) {
          ?? ??? ??? ??? ??? ?TreeItem item = new TreeItem(tree, SWT.NONE);
          ?? ??? ??? ??? ??? ?item = initTreeItem(dragSourceItem[0], item);
          ?? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ?TreeItem item = (TreeItem) event.item;
          ?? ??? ??? ??? ??? ?Point pt = shell.getDisplay().map(null, tree, event.x,
          ?? ??? ??? ??? ??? ??? ??? ?event.y);
          ?? ??? ??? ??? ??? ?Rectangle bounds = item.getBounds();
          ?? ??? ??? ??? ??? ?TreeItem parent = item.getParentItem();
          ?? ??? ??? ??? ??? ?if (parent != null) {
          ?? ??? ??? ??? ??? ??? ?TreeItem[] items = parent.getItems();
          ?? ??? ??? ??? ??? ??? ?int index = 0;

          ?? ??? ??? ??? ??? ??? ?for (int i = 0; i < items.length; i++) {
          ?? ??? ??? ??? ??? ??? ??? ?if (items[i] == item) {
          ?? ??? ??? ??? ??? ??? ??? ??? ?index = i;
          ?? ??? ??? ??? ??? ??? ??? ??? ?break;
          ?? ??? ??? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ??? ?if (pt.y < bounds.y + bounds.height / 3) {
          ?? ??? ??? ??? ??? ??? ??? ?TreeItem newItem = new TreeItem(parent, SWT.NONE,
          ?? ??? ??? ??? ??? ??? ??? ??? ??? ?index);
          ?? ??? ??? ??? ??? ??? ??? ?newItem = initTreeItem(dragSourceItem[0], newItem);

          ?? ??? ??? ??? ??? ??? ?} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
          ?? ??? ??? ??? ??? ??? ??? ?TreeItem newItem = new TreeItem(parent, SWT.NONE,
          ?? ??? ??? ??? ??? ??? ??? ??? ??? ?index + 1);
          ?? ??? ??? ??? ??? ??? ??? ?newItem = initTreeItem(dragSourceItem[0], newItem);

          ?? ??? ??? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ??? ??? ?TreeItem newItem = new TreeItem(item, SWT.NONE);
          ?? ??? ??? ??? ??? ??? ??? ?newItem = initTreeItem(dragSourceItem[0], newItem);

          ?? ??? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ??? ?TreeItem[] items = tree.getItems();
          ?? ??? ??? ??? ??? ??? ?int index = 0;
          ?? ??? ??? ??? ??? ??? ?for (int i = 0; i < items.length; i++) {
          ?? ??? ??? ??? ??? ??? ??? ?if (items[i] == item) {
          ?? ??? ??? ??? ??? ??? ??? ??? ?index = i;
          ?? ??? ??? ??? ??? ??? ??? ??? ?break;
          ?? ??? ??? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ??? ?if (pt.y < bounds.y + bounds.height / 3) {
          ?? ??? ??? ??? ??? ??? ??? ?TreeItem newItem = new TreeItem(tree, SWT.NONE,
          ?? ??? ??? ??? ??? ??? ??? ??? ??? ?index);
          ?? ??? ??? ??? ??? ??? ??? ?newItem = initTreeItem(dragSourceItem[0], newItem);

          ?? ??? ??? ??? ??? ??? ?} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
          ?? ??? ??? ??? ??? ??? ??? ?TreeItem newItem = new TreeItem(tree, SWT.NONE,
          ?? ??? ??? ??? ??? ??? ??? ??? ??? ?index + 1);
          ?? ??? ??? ??? ??? ??? ??? ?newItem = initTreeItem(dragSourceItem[0], newItem);
          ?? ??? ??? ??? ??? ??? ?} else {
          ?? ??? ??? ??? ??? ??? ??? ?TreeItem newItem = new TreeItem(item, SWT.NONE);
          ?? ??? ??? ??? ??? ??? ??? ?newItem = initTreeItem(dragSourceItem[0], newItem);
          ?? ??? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ?}

          ?? ??? ??? ??? ?}
          ?? ??? ??? ??? ?tree.redraw();

          ?? ??? ??? ?}
          ?? ??? ?});

          ?? ?}

          posted on 2007-02-12 18:08 Bill111 閱讀(1305) 評論(2)  編輯  收藏

          評論

          # re: SWT 中 Tree/TreeViewer的鼠標(biāo)拖動方法[未登錄] 2007-03-07 14:11 Eric

          我想請教一下您一些有關(guān)結(jié)點拖動的問題
          不知您是否有時間,假如有時間麻煩您加我的QQ419034028
          謝謝
          小弟真的很著急
          近期就得把那個東西做完
            回復(fù)  更多評論    

          # re: SWT 中 Tree/TreeViewer的鼠標(biāo)拖動方法 2007-05-21 21:44 D

            回復(fù)  更多評論    

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 台东市| 洪湖市| 清苑县| 潼南县| 龙海市| 通榆县| 衡水市| 滕州市| 广安市| 彩票| 吉安市| 额敏县| 静乐县| 彭泽县| 德庆县| 大邑县| 南江县| 贵定县| 临高县| 沂南县| 泰和县| 高青县| 海宁市| 富裕县| 吉林省| 环江| 志丹县| 仁寿县| 南召县| 安陆市| 松阳县| 和平区| 宽甸| 瑞安市| 柳州市| 浪卡子县| 古田县| 永州市| 色达县| 青铜峡市| 瑞昌市|