我要问的问题是:如何调用window底层方法实现以上三个功能,不是对单个控件里的内容的操作,而是通用的方法,实现windows下那样的功能。请高手赐教

解决方案 »

  1.   

    我以前写的记事本的部分代码.不知道是不是你说的. 
    java.awt.datatransfer.Clipboard clipboard=java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); //获得系统剪切板//下面是我的记事本部分功能.e.getSource()是当触发了某个事件.这里是copy的代码,下面依此是粘贴,等代码.可以看你需要的部分.(关于clopboard的).都是汉语拼音命名的变良.else if(e.getSource()==fuZhi||e.getSource()==fuZhi2)//////////Copy 'fuZhi' is 'Copy'
    {
     String temp=text.getSelectedText();
     stringSelection=new StringSelection(temp);
     clipboard.setContents(stringSelection,null);
    }else if(e.getSource()==jianQie||e.getSource()==jianQie2)//////////'jianQie' is 'Cut'
    {
     String temp=text.getSelectedText();
     stringSelection=new StringSelection(temp);
     clipboard.setContents(stringSelection,null);
     int start=text.getSelectionStart();
     int end=text.getSelectionEnd();
     text.replaceRange("",start,end);
    }
    //这里是粘贴.主要是如何从系统剪切板里取得数据.
    else if(e.getSource()==zhanTie||e.getSource()==zhanTie2)///////////////'zhanTie' is 'Paste'.
    {
     java.awt.datatransfer.Transferable transferable=clipboard.getContents(this);
     java.awt.datatransfer.DataFlavor flavor=java.awt.datatransfer.DataFlavor.stringFlavor;
     if(transferable.isDataFlavorSupported(flavor))
    {
     try
    {
    int start=text.getSelectionStart();
    int end=text.getSelectionEnd();
    text.replaceRange("",start,end);
    String str;
     int n=text.getCaretPosition();
     str=(String)transferable.getTransferData(flavor);
     text.insert(str,n);
    }
    catch(Exception ee)
    {
     
    }
        }
    }
      

  2.   

    java.awt.datatransfer.Transferable transferable=clipboard.getContents(this);//传送操作提供数据的类定义接口.放在剪切板的东西都实现了这个接口.java.awt.datatransfer.DataFlavor flavor=java.awt.datatransfer.DataFlavor.stringFlavor//在数据拖放期间,或在文件系统中,当每个实例显示在剪切板上时,它代表了数据格式的不透明概念.其实就是在系统内存中的东西是哪种类型.比如:文本,图片等.就象网页中的contentType="text/html"等一样.这里的stringFlavor是字符类型.
     if(transferable.isDataFlavorSupported(flavor))//如果是XX类型.这里是把flavor传递进去.就是:如果是文本类型.那么我们才取得:
     str=(String)transferable.getTransferData(flavor);
    这样把剪切伴东西get出来.才强制成String 型不会出错.