<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
    主站蜘蛛池模板: 亚洲精品乱码久久久久蜜桃 | 亚洲啪啪AV无码片| 亚洲成AV人片在线观看ww| 亚洲一区精彩视频| 希望影院高清免费观看视频| 亚洲福利中文字幕在线网址| 亚洲AV日韩AV永久无码色欲 | 97在线免费视频| 人人狠狠综合久久亚洲婷婷| 国产亚洲免费的视频看| 亚洲国产综合专区在线电影| 亚洲国产精品18久久久久久| 免费无码又爽又高潮视频| 亚洲香蕉网久久综合影视| 99麻豆久久久国产精品免费| 亚洲av日韩av天堂影片精品| 免费国产黄网站在线观看动图| 日韩内射激情视频在线播放免费| 亚洲一区二区三区电影| 又粗又大又黑又长的免费视频| 亚洲一区二区三区成人网站 | 一级毛片全部免费播放| 亚洲一卡二卡三卡| 免费成人在线观看| 久久免费福利视频| 亚洲性色AV日韩在线观看| 伊人久久亚洲综合影院| 亚洲人成www在线播放| 四虎影院永久免费观看| 成全视频免费观看在线看| 亚洲日本在线播放| 免费真实播放国产乱子伦| 久久综合九色综合97免费下载| 国产精品亚洲四区在线观看 | 国产亚洲精AA在线观看SEE | 亚洲&#228;v永久无码精品天堂久久| 成在人线av无码免费高潮水| 亚洲日韩在线观看免费视频| 春意影院午夜爽爽爽免费| 免费国产成人午夜私人影视| 日韩免费电影网站|