<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    hengheng123456789

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

    1、拖拽Label的文字。

    ?public static void main (String [] args) {
    ??
    ??Display display = new Display ();
    ??final Shell shell = new Shell (display);
    ??shell.setLayout(new FillLayout());
    ??final Label label1 = new Label (shell, SWT.BORDER);
    ??label1.setText ("TEXT");
    ??final Label label2 = new Label (shell, SWT.BORDER);
    ??setDragDrop (label1);
    ??setDragDrop (label2);
    ??shell.setSize (200, 200);
    ??shell.open ();
    ??while (!shell.isDisposed ()) {
    ???if (!display.readAndDispatch ()) display.sleep ();
    ??}
    ??display.dispose ();
    ?}
    ?
    ?public static void setDragDrop (final Label label) {
    ??
    ??Transfer[] types = new Transfer[] {TextTransfer.getInstance()};
    ??int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
    ??
    ??final DragSource source = new DragSource (label, operations);
    ??source.setTransfer(types);
    ??source.addDragListener (new DragSourceListener () {
    ???public void dragStart(DragSourceEvent event) {
    ????event.doit = (label.getText ().length () != 0);
    ???}
    ???public void dragSetData (DragSourceEvent event) {
    ????event.data = label.getText ();
    ???}
    ???public void dragFinished(DragSourceEvent event) {
    ????if (event.detail == DND.DROP_MOVE)
    ?????label.setText ("");
    ???}
    ??});

    ??DropTarget target = new DropTarget(label, operations);
    ??target.setTransfer(types);
    ??target.addDropListener (new DropTargetAdapter() {
    ???public void drop(DropTargetEvent event) {
    ????if (event.data == null) {
    ?????event.detail = DND.DROP_NONE;
    ?????return;
    ????}
    ????label.setText ((String) event.data);
    ???}
    ??});
    ?}

    2、隨意拖拽Tree子節(jié)點(diǎn)。

    ?public static void main (String [] args) {
    ??
    ??final Display display = new Display ();
    ??final Shell shell = new Shell (display);
    ??shell.setLayout(new FillLayout());
    ??//建立用于拖拽的樹
    ??final Tree tree = new Tree(shell, SWT.BORDER);
    ??for (int i = 0; i < 3; i++) {
    ???TreeItem item = new TreeItem(tree, SWT.NONE);
    ???item.setText("item "+i);
    ???for (int j = 0; j < 3; j++) {
    ????TreeItem subItem = new TreeItem(item, SWT.NONE);
    ????subItem.setText("item "+i+" "+j);
    ????for (int k = 0; k < 3; k++) {
    ?????TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
    ?????subsubItem.setText("item "+i+" "+j+" "+k);
    ????}
    ???}
    ??}
    ??
    ??Transfer[] types = new Transfer[] {TextTransfer.getInstance()};
    ??int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
    ??
    ??//建立拖拽 源————樹tree對象
    ??final DragSource source = new DragSource (tree, operations);
    ??source.setTransfer(types);
    ??final TreeItem[] dragSourceItem = new TreeItem[1];
    ??source.addDragListener (new DragSourceListener () {
    ???public void dragStart(DragSourceEvent event) {
    ????TreeItem[] selection = tree.getSelection();?// 獲取所選tree的節(jié)點(diǎn)
    ????if (selection.length > 0 && selection[0].getItemCount() == 0) //判斷所選節(jié)點(diǎn)是否存在并且為末端節(jié)點(diǎn)
    ????{
    ?????event.doit = true;?//啟動(dòng)拖拽功能
    ?????dragSourceItem[0] = selection[0]; //保存拖拽節(jié)點(diǎn)信息
    ????} else {
    ?????event.doit = false;
    ????}
    ???};
    ???public void dragSetData (DragSourceEvent event) {
    ????event.data = dragSourceItem[0].getText(); //保存拖拽節(jié)點(diǎn)信息到事件數(shù)據(jù)中
    ???}
    ???public void dragFinished(DragSourceEvent event) {
    ????if (event.detail == DND.DROP_MOVE)
    ?????dragSourceItem[0].dispose();
    ?????dragSourceItem[0] = null;
    ???}
    ??});
    ??
    ??//建立拖拽 目的————樹tree對象
    ??DropTarget target = new DropTarget(tree, operations);
    ??target.setTransfer(types);
    ??target.addDropListener (new DropTargetAdapter() {
    ???//處理拖拽到目的上空時(shí)的方法
    ???public void dragOver(DropTargetEvent event) {
    ????event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL; //響應(yīng)拖拽動(dòng)作,F(xiàn)EEDBACK_EXPAND表示拖拽到可以展開的節(jié)點(diǎn)時(shí)展開相應(yīng)節(jié)點(diǎn)。
    ????if (event.item != null) {
    ?????TreeItem item = (TreeItem)event.item;
    ?????//處理拖拽動(dòng)作響應(yīng),根據(jù)拖拽的位置不同產(chǎn)生不同的響應(yīng)
    ?????Point pt = display.map(null, tree, event.x, event.y); //獲取拖拽當(dāng)前位置點(diǎn)
    ?????Rectangle bounds = item.getBounds(); //獲取目的節(jié)點(diǎn)的邊框
    ?????
    ?????//根據(jù)拖拽當(dāng)前位置點(diǎn)與目的節(jié)點(diǎn)的邊框位置設(shè)置響應(yīng),如顯示為FEEDBACK_INSERT_BEFORE、FEEDBACK_INSERT_AFTER
    ?????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;
    ?????}
    ????}
    ???}
    ???//處理放下時(shí)的方法
    ???public void drop(DropTargetEvent event) {
    ????if (event.data == null) {
    ?????event.detail = DND.DROP_NONE;
    ?????return;
    ????}
    ????String text = (String)event.data;
    ????//如果放下的位置沒有節(jié)點(diǎn),則新建立一個(gè)節(jié)點(diǎn),以根節(jié)點(diǎn)為父節(jié)點(diǎn)
    ????if (event.item == null)
    ????{
    ?????TreeItem item = new TreeItem(tree, SWT.NONE);
    ?????item.setText(text);
    ????}
    ????//如果放下的位置有節(jié)點(diǎn)
    ????else
    ????{
    ?????TreeItem item = (TreeItem)event.item;
    ?????Point pt = display.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) {
    ???????//以當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)為父建立一個(gè)子節(jié)點(diǎn),并且插入到當(dāng)前節(jié)點(diǎn)前
    ???????TreeItem newItem = new TreeItem(parent, SWT.NONE, index);
    ???????newItem.setText(text);
    ??????} else if (pt.y > bounds.y + 2*bounds.height/3) {
    ???????//以當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)為父建立一個(gè)子節(jié)點(diǎn),并且插入到當(dāng)前節(jié)點(diǎn)前
    ???????TreeItem newItem = new TreeItem(parent, SWT.NONE, index+1);
    ???????newItem.setText(text);
    ??????} else {
    ???????//以當(dāng)前為父節(jié)點(diǎn)建立一個(gè)子節(jié)點(diǎn)
    ???????TreeItem newItem = new TreeItem(item, SWT.NONE);
    ???????newItem.setText(text);
    ??????}
    ??????
    ?????} 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.setText(text);
    ??????} else if (pt.y > bounds.y + 2*bounds.height/3) {
    ???????TreeItem newItem = new TreeItem(tree, SWT.NONE, index+1);
    ???????newItem.setText(text);
    ??????} else {
    ???????TreeItem newItem = new TreeItem(item, SWT.NONE);
    ???????newItem.setText(text);
    ??????}
    ?????}
    ?????
    ?????
    ????}
    ???}
    ??});

    ??shell.setSize (400, 400);
    ??shell.open ();
    ??while (!shell.isDisposed ()) {
    ???if (!display.readAndDispatch ()) display.sleep ();
    ??}
    ??display.dispose ();
    ?}

    posted on 2006-11-07 18:05 哼哼 閱讀(1482) 評(píng)論(0)  編輯  收藏 所屬分類: SWT
    主站蜘蛛池模板: 香蕉视频在线免费看| 亚洲午夜爱爱香蕉片| baoyu777永久免费视频| 亚洲日韩精品国产一区二区三区| 亚洲综合无码精品一区二区三区| 成年女人喷潮毛片免费播放| 久久精品电影免费动漫| 免费播放国产性色生活片| 亚洲一区欧洲一区| 久久精品国产亚洲av麻豆小说| 久久亚洲高清综合| 免费人成视网站在线观看不卡| 色婷婷7777免费视频在线观看| 99久久国产免费中文无字幕| 成人无码精品1区2区3区免费看| 国产亚洲美女精品久久久久| 国产精品亚洲综合久久| 亚洲午夜一区二区电影院| 91亚洲国产在人线播放午夜| 久久亚洲国产精品一区二区| 中文字幕人成人乱码亚洲电影| 亚洲欧洲日产国码一级毛片| 国产精品另类激情久久久免费| 成人黄页网站免费观看大全| 美女视频黄a视频全免费| 日本黄网站动漫视频免费| 99ee6热久久免费精品6| 午夜视频免费在线观看| 国产精品免费AV片在线观看| 免费人成在线观看视频高潮| 二区久久国产乱子伦免费精品| 精品一区二区三区免费视频| 成人免费一区二区三区| 香蕉免费一级视频在线观看| 永久免费AV无码网站国产| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲&#228;v永久无码精品天堂久久 | a免费毛片在线播放| 四虎永久在线精品免费一区二区| 黄网站色视频免费观看45分钟| 色婷婷六月亚洲综合香蕉|