⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dnd入门学习.htm

📁 DND入门学习
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            effect”。鼠标图形同时也可以告诉我们在数据被Drop之后,什么样的操作会被执行,是拷贝还是移动还是别的什么。在windows中有以下几种鼠标图形:<BR>[attachment=453] 
            <BR>? ? 如果我们drag 
            over一个带有item的部件,比方说tree或者table,那么item会变成高亮表明我们会将数据Drop在这个item上,这个过程我们叫“drag 
            under effect”。<BR><BR><B>Transfer</B><BR><BR>? ? 有了DragSource 和 
            DropTarget之后,我们就需要一个载体来承载不同类型的数据,让这个载体在DragSource 和 
            DropTarget之间传递数据。Transfer实际上是一个提供数据在Java representation与platform 
            specific 
            representation之间交互的抽象类.在Java对象与特定的平台之间进行format,下面是几个format:<BR>? ? 
            TextTransfer String "hello world" <BR>? ? RTFTransfer String 
            "{\\rtf1\\b\\i hello world}" <BR>? ? FileTransfer String[] new 
            String[] {file1.getAbsolutePath(), file2.getAbsolutePath()} <BR>? ? 
            Transfer是传输的载体,TransferData真正的利用JNI将数据和本地操作系统发生关系。TransferData包含了很多特定于平台的公用的属性,应用不应该直接去访问这些属性。如果真的有必要去访问这些属性,那么我们可以通过扩展Transfer类来完成对特定平台的额外操作。<BR>? 
            ? 
            另外,Transfer不只是可以用在DND中,也可以单独拿出来使用,例如实现Clipboard,可以在copy时将数据暂存于Clipboard中,past时再取出。这个和DND的在Drag时将数据暂存于Clipboard中,Drop时再取出类似。<BR><BR><BR><FONT 
            color=gray>[ 此贴被金鳞在2005-12-02 16:20重新编辑 ]</FONT></SPAN> </TD></TR>
        <TR vAlign=bottom bgColor=#ffffff>
          <TD colSpan=6>
            <TABLE cellSpacing=1 cellPadding=4 bgColor=#e7e3e7>
              <TBODY>
              <TR>
                <TD class=t_one align=middle>此帖被评分,最近评分记录
                  <TABLE>
                    <TBODY>
                    <TR>
                      <TD>财富:10(yipsilon)</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><IMG 
            src="DND入门学习.files/sigline.gif" align=absBottom> 
            <BR>金鳞岂是池中物,一遇风云便化龙<BR></TD></TR>
        <TR vAlign=bottom bgColor=#ffffff>
          <TD class=smalltxt colSpan=5><FONT color=red>[楼 主]</FONT> | 
            <B>Posted:</B> 2005年12月02日 16:10</TD>
          <TD class=smalltxt align=right><A href="javascript:scroll(0,0)"><IMG 
            alt=顶端 src="DND入门学习.files/top.gif"></A> 
  </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE width="100%" align=center>
  <TBODY>
  <TR>
    <TD height=1></TD></TR></TBODY></TABLE><A name=3959>
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" cellSpacing=1 
cellPadding=0 width="100%" align=center bgColor=#e7e3e7>
  <TBODY>
  <TR>
    <TD 
    style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px" 
    vAlign=top width="20%" bgColor=#ffffff height="100%"><FONT face=Gulim 
      color=#000066><B>金鳞</B></FONT> 
      <TABLE cellSpacing=0 cellPadding=0 width="98%">
        <TBODY>
        <TR>
          <TD align=middle><IMG src="DND入门学习.files/3462.jpg" 
        border=0></TD></TR></TBODY></TABLE>状态: <FONT color=red><B>离线</B></FONT> 
      <BR>级别: <FONT color=#555555><B>CEC版主</B></FONT><BR>精华: <A 
      href="http://www.eclipseworld.org/bbs/search.php?authorid=3462&amp;digest=1" 
      target=_blank><FONT color=green><B>2</B></FONT></A> <BR>发帖: <FONT 
      color=green><B>247</B></FONT><BR>威望: <FONT color=#984b98><B>48 
      点</B></FONT><BR>财富: <FONT color=#984b98><B>191 元</B></FONT><BR>贡献: <FONT 
      color=red><B>0 点</B></FONT><BR>注册时间:2005-11-24<BR>最后登录:2006-03-28 </TD>
    <TD vAlign=top width="80%" bgColor=#ffffff height="100%">
      <TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" height="100%" 
      cellSpacing=0 cellPadding=4 width="99%" align=center>
        <TBODY>
        <TR>
          <TD vAlign=top bgColor=#ffffff colSpan=6><A 
            href="http://www.eclipseworld.org/bbs/profile.php?action=show&amp;uid=3462"><IMG 
            alt=查看作者资料 src="DND入门学习.files/profile.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/message.php?action=write&amp;touid=3462"><IMG 
            alt=发送短消息 src="DND入门学习.files/message.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/sendemail.php?action=tofriend&amp;tid=893"><IMG 
            alt=推荐此帖 src="DND入门学习.files/emailto.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/post.php?action=quote&amp;fid=91&amp;tid=893&amp;pid=3959&amp;article=1"><IMG 
            alt=引用回复这个帖子 src="DND入门学习.files/quote.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/post.php?action=modify&amp;fid=91&amp;tid=893&amp;pid=3959&amp;article=1"><IMG 
            src="DND入门学习.files/edit.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/job.php?action=report&amp;tid=893&amp;pid=3959" 
            target=_blank><IMG src="DND入门学习.files/report.gif" 
            align=absMiddle></A> <A title=QQ:9275760 
            href="http://wpa.qq.com/msgrd?V=1&amp;Uin=9275760&amp;Site=中国Eclipse社区&amp;Menu=yes" 
            target=_blank><IMG src="DND入门学习.files/qq.gif" align=absMiddle></A> 
            <BR><BR><SPAN class=tpc_title></SPAN><BR><BR><SPAN 
            class=tpc_content>理解了拖拽的这些概念之后,下面我们就着一个简单的例子来运用一下。如图所示,这个例子中,左面的tree是DragSource,右面的table是DropTarget,我们从左面的tree中选择一条,拖进右边的table中:<BR><B></B><BR><IMG 
            onclick="if(this.width>=700) window.open('http://www.eclipseworld.org/bbs/attachment/Mon_0512/91_3462_ffd93f551d916df.gif');" 
            src="DND入门学习.files/91_3462_ffd93f551d916df.gif" 
            onload="if(this.width>'700')this.width='700';" border=0> <IMG 
            src="DND入门学习.files/9.gif"><BR><BR><BR><FONT color=gray>[ 
            此贴被金鳞在2005-12-02 16:31重新编辑 ]</FONT></SPAN> </TD></TR>
        <TR vAlign=bottom bgColor=#ffffff>
          <TD colSpan=6><IMG src="DND入门学习.files/sigline.gif" align=absBottom> 
            <BR>金鳞岂是池中物,一遇风云便化龙<BR></TD></TR>
        <TR vAlign=bottom bgColor=#ffffff>
          <TD class=smalltxt colSpan=5><FONT color=red>[1 楼]</FONT> | 
            <B>Posted:</B> 2005年12月02日 16:18</TD>
          <TD class=smalltxt align=right><A href="javascript:scroll(0,0)"><IMG 
            alt=顶端 src="DND入门学习.files/top.gif"></A> 
  </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE width="100%" align=center>
  <TBODY>
  <TR>
    <TD height=1></TD></TR></TBODY></TABLE><A name=3966>
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" cellSpacing=1 
cellPadding=0 width="100%" align=center bgColor=#e7e3e7>
  <TBODY>
  <TR>
    <TD 
    style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px" 
    vAlign=top width="20%" bgColor=#ffffff height="100%"><FONT face=Gulim 
      color=#000066><B>金鳞</B></FONT> 
      <TABLE cellSpacing=0 cellPadding=0 width="98%">
        <TBODY>
        <TR>
          <TD align=middle><IMG src="DND入门学习.files/3462.jpg" 
        border=0></TD></TR></TBODY></TABLE>状态: <FONT color=red><B>离线</B></FONT> 
      <BR>级别: <FONT color=#555555><B>CEC版主</B></FONT><BR>精华: <A 
      href="http://www.eclipseworld.org/bbs/search.php?authorid=3462&amp;digest=1" 
      target=_blank><FONT color=green><B>2</B></FONT></A> <BR>发帖: <FONT 
      color=green><B>247</B></FONT><BR>威望: <FONT color=#984b98><B>48 
      点</B></FONT><BR>财富: <FONT color=#984b98><B>191 元</B></FONT><BR>贡献: <FONT 
      color=red><B>0 点</B></FONT><BR>注册时间:2005-11-24<BR>最后登录:2006-03-28 </TD>
    <TD vAlign=top width="80%" bgColor=#ffffff height="100%">
      <TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" height="100%" 
      cellSpacing=0 cellPadding=4 width="99%" align=center>
        <TBODY>
        <TR>
          <TD vAlign=top bgColor=#ffffff colSpan=6><A 
            href="http://www.eclipseworld.org/bbs/profile.php?action=show&amp;uid=3462"><IMG 
            alt=查看作者资料 src="DND入门学习.files/profile.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/message.php?action=write&amp;touid=3462"><IMG 
            alt=发送短消息 src="DND入门学习.files/message.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/sendemail.php?action=tofriend&amp;tid=893"><IMG 
            alt=推荐此帖 src="DND入门学习.files/emailto.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/post.php?action=quote&amp;fid=91&amp;tid=893&amp;pid=3966&amp;article=2"><IMG 
            alt=引用回复这个帖子 src="DND入门学习.files/quote.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/post.php?action=modify&amp;fid=91&amp;tid=893&amp;pid=3966&amp;article=2"><IMG 
            src="DND入门学习.files/edit.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/job.php?action=report&amp;tid=893&amp;pid=3966" 
            target=_blank><IMG src="DND入门学习.files/report.gif" 
            align=absMiddle></A> <A title=QQ:9275760 
            href="http://wpa.qq.com/msgrd?V=1&amp;Uin=9275760&amp;Site=中国Eclipse社区&amp;Menu=yes" 
            target=_blank><IMG src="DND入门学习.files/qq.gif" align=absMiddle></A> 
            <BR><BR><SPAN class=tpc_title></SPAN><BR><BR><SPAN 
            class=tpc_content>我们先从DragSource开始:<BR><BR>//获得一个TextTransfer的实例,TextTransfer是Transfer的一个子类,<BR>//他提供将普通文本以Java 
            String的表示转换为特定于平台的表示的机制。<BR>TextTransfer 
            textTransfer=TextTransfer.getInstance();<BR><BR>//构造一个普通的tree<BR>dragTree=new 
            Tree(parent,SWT.FULL_SELECTION|SWT.SINGLE);<BR><BR>//将dragTree与DragSource绑定(一个widget只能帮定在一个DragSource),<BR>//并允许数据可以从DragSource被MOVE或COPY<BR>DragSource 
            source=new 
            DragSourc(dragTree,DND.DROP_MOVE|DND.DROP_COPY);<BR>//指定允许的textTransfer类型,可以是多个。<BR>source.setTransfer(new 
            Transfer[] { textTransfer 
            });<BR>//注册DragSourceListener。处理拖操作的一些事件<BR>source.addDragListener(new 
            MyDragSourceListener());<BR><BR>在MyDragSourceListener中有以下3个方法:<BR><BR>// 
            指定拖动开始的执行策略。<BR>public void dragStart(DragSourceEvent 
            event){<BR>  //在这里可以设置一些条件,如果不符合条件,比方说选中的treeitem是根,<BR>&nbsp; 
            &nbsp; //则不可拖动<BR>&nbsp; &nbsp; if(treeitem是根){<BR>   &nbsp; 
            event.doit=false;<BR>&nbsp; &nbsp; 
            }<BR>}<BR><BR>//dragSetData方法在dragStart通过之后才被调用。这个方法可能会因为同一种传输<BR>//类型多次set或不同的多种传输类型的set而被多次调用,象windows等有些平台<BR>//中,dropTarget可以在鼠标移动的过程中请求数据,但是在Motif等平台中,只可以<BR>//在drop操作完成之后才可以请求数据,所以在这个方法中不要假设drag 
            and 
            drop操<BR>//作已经完成.在这个方法中是无法知道data将被drop到哪里.<BR>//set的Data也要符合指定的Transfer的format类型。<BR>&nbsp; 
            &nbsp; public void dragSetData(DragSourceEvent event){<BR>   &nbsp; 
            &nbsp; 
            //在这里可以为DragSourceEvent添加数据,这个方法在拖动过程中<BR>    //会被不停的调用<BR>&nbsp; 
            &nbsp; &nbsp; &nbsp; TreeItem selection = 
            DragAndDrop.this.dragTree.getSelection()[0];<BR>&nbsp; &nbsp; &nbsp; 
            &nbsp; event.data=selection.getText();<BR>&nbsp; &nbsp; 
            }<BR><BR>&nbsp; &nbsp; // 根据事先指定好的操作类型来处理操作结果<BR>&nbsp; &nbsp; 
            public void dragFinished(DragSourceEvent event){<BR>&nbsp; &nbsp; 
            &nbsp; &nbsp; if(event.detail==DND.DROP_MOVE){<BR>&nbsp; &nbsp; 
            &nbsp; &nbsp; &nbsp; &nbsp; //remove selection TreeItem<BR>&nbsp; 
            &nbsp; &nbsp; &nbsp; }<BR>&nbsp; &nbsp; }</SPAN> </TD></TR>
        <TR vAlign=bottom bgColor=#ffffff>
          <TD colSpan=6><IMG src="DND入门学习.files/sigline.gif" align=absBottom> 
            <BR>金鳞岂是池中物,一遇风云便化龙<BR></TD></TR>
        <TR vAlign=bottom bgColor=#ffffff>
          <TD class=smalltxt colSpan=5><FONT color=red>[2 楼]</FONT> | 
            <B>Posted:</B> 2005年12月02日 16:55</TD>
          <TD class=smalltxt align=right><A href="javascript:scroll(0,0)"><IMG 
            alt=顶端 src="DND入门学习.files/top.gif"></A> 
  </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE width="100%" align=center>
  <TBODY>
  <TR>
    <TD height=1></TD></TR></TBODY></TABLE><A name=3985>
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" cellSpacing=1 
cellPadding=0 width="100%" align=center bgColor=#e7e3e7>
  <TBODY>
  <TR>
    <TD 
    style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px" 
    vAlign=top width="20%" bgColor=#ffffff height="100%"><FONT face=Gulim 
      color=#000066><B>金鳞</B></FONT> 
      <TABLE cellSpacing=0 cellPadding=0 width="98%">
        <TBODY>
        <TR>
          <TD align=middle><IMG src="DND入门学习.files/3462.jpg" 
        border=0></TD></TR></TBODY></TABLE>状态: <FONT color=red><B>离线</B></FONT> 
      <BR>级别: <FONT color=#555555><B>CEC版主</B></FONT><BR>精华: <A 
      href="http://www.eclipseworld.org/bbs/search.php?authorid=3462&amp;digest=1" 
      target=_blank><FONT color=green><B>2</B></FONT></A> <BR>发帖: <FONT 
      color=green><B>247</B></FONT><BR>威望: <FONT color=#984b98><B>48 
      点</B></FONT><BR>财富: <FONT color=#984b98><B>191 元</B></FONT><BR>贡献: <FONT 
      color=red><B>0 点</B></FONT><BR>注册时间:2005-11-24<BR>最后登录:2006-03-28 </TD>
    <TD vAlign=top width="80%" bgColor=#ffffff height="100%">
      <TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" height="100%" 
      cellSpacing=0 cellPadding=4 width="99%" align=center>
        <TBODY>
        <TR>
          <TD vAlign=top bgColor=#ffffff colSpan=6><A 
            href="http://www.eclipseworld.org/bbs/profile.php?action=show&amp;uid=3462"><IMG 
            alt=查看作者资料 src="DND入门学习.files/profile.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/message.php?action=write&amp;touid=3462"><IMG 
            alt=发送短消息 src="DND入门学习.files/message.gif" align=absMiddle></A> <A 
            href="http://www.eclipseworld.org/bbs/sendemail.php?action=tofriend&amp;tid=893"><IMG 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -