今天看到一段代码。是这样写的
clipboard.setContents(contents,ClipboardDemo.this);
其中,clipboard是Clipboard类的对象,ClipboardDemo是继承JFrame的类,contents是用
Transferable contents=clipboard.getContents(this)定义。ClipboardDemo.this这个参数是什么意思,我查过帮助文档,
 void setContents(Transferable contents, ClipboardOwner owner) 函数原型是这样的

解决方案 »

  1.   

    好奇.this是关键字.能这么用吗? 能把ClipboardDemo类贴一下吗?
      

  2.   

    代码在下面import java.awt.*;
    import java.awt.event.*;
    import java.awt.datatransfer.*;
    import javax.swing.*;
    //剪贴板演示
    public class ClipboardDemo extends JFrame implements ClipboardOwner{
     Clipboard clipboard;  //剪贴板
     JTextArea jtaCopyTo=new JTextArea(5,10); //用于拷贝的文本框
     JTextArea jtaPaste=new JTextArea(5,10); //用于粘贴的文本框
     
     public ClipboardDemo(){
      super("使用剪贴板的复制/粘贴程序"); //调用父类构造函数
        
      clipboard=Toolkit.getDefaultToolkit().getSystemClipboard(); //获得系统剪贴板
      
      JButton btCopy=new JButton("拷贝"); //拷贝按钮
      JButton btPaste=new JButton("粘贴"); //粘贴按钮
      jtaCopyTo.setLineWrap(true); //设置换行
      jtaPaste.setLineWrap(true);
      jtaCopyTo.setBorder(BorderFactory.createTitledBorder("复制到系统剪切板")); //设置边界
      jtaPaste.setBorder(BorderFactory.createTitledBorder("从系统剪切板粘贴"));
      
      Container container=getContentPane(); //得到容器
      JToolBar toolBar=new JToolBar(); //实例化工具栏
      toolBar.add(btCopy); //增加工具栏按钮
      toolBar.add(btPaste);  
      btCopy.addActionListener(new CopyListener()); //按钮事件处理
      btPaste.addActionListener(new PasteListener());  
      Box box=new Box(BoxLayout.X_AXIS); //实例化Box
      box.add(jtaCopyTo); //增加文本框到Box上
      box.add(jtaPaste);  
      container.add(toolBar,BorderLayout.NORTH); //增加工具栏到容器
      container.add(box,BorderLayout.CENTER); //增加Box到容器
     
      setSize(320,180); //设置窗口尺寸
      setVisible(true); //设置窗口为可视
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
     }
     
     class CopyListener implements ActionListener { //拷贝数据处理
      public void actionPerformed(ActionEvent event) {
      
       StringSelection contents=new StringSelection(jtaCopyTo.getText()); //用拷贝文本框文本实例化StringSelection对象
       clipboard.setContents(contents,ClipboardDemo.this); //设置系统剪贴板内容
      }
     }
     
     class PasteListener implements ActionListener { //粘贴数据处理
      public void actionPerformed(ActionEvent event) {
       Transferable contents=clipboard.getContents(this); //得到剪贴板内容
        if(contents!=null && contents.isDataFlavorSupported(DataFlavor.stringFlavor)) { //判断内容是否为空,是否为字符串
         try{
          String string= (String) contents.getTransferData(DataFlavor.stringFlavor); //转换内容到字符串
          jtaPaste.append(string); //插入字符串到粘贴文本框
         }catch (Exception ex){
          ex.printStackTrace(); //错误处理
         }
       }
      }
     }
     
     public void lostOwnership(Clipboard clip,Transferable transferable) { //实现ClipboardOwner接口中的方法
     }
     public static void main(String[] args){
      new ClipboardDemo(); 
     }
    }
      

  3.   

    刚刚再弄了一下,有点懂了,类名加.this 跟直接用 this 是一样的效果.都是指向自身的一个句柄,不知道这样理解对不对.我写了一个小的例子,验证了一下.