2016-09-14 52 views
0

我有以下的麻烦剪辑内容,当我复制的IntelliJ IDEA编辑文本,并运行如何确定当前剪贴板中的DataFlavor之前得到

Toolkit.defaultToolkit.systemClipboard.getData(DataFlavor.stringFlavor) 

它会提高:

Exception "java.lang.ClassNotFoundException: com/intellij/codeInsight/editorActions/FoldingData"while constructing DataFlavor for: application/x-java-jvm-local-objectref; class=com.intellij.codeInsight.editorActions.FoldingData 

事实上,我希望忽略剪辑内容与FoldingData,如何检测当前剪贴板DataFlavor

回答

0

剪贴板数据可能有多种口味。因此,您应该使用Clipboard.getAvailableDataFlavors()并遍历数组以确定您正在查找的DataFlavor是否存在。

http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/Clipboard.html#getAvailableDataFlavors()

但是,如果你得到一个ClassNotFoundException,这意味着运行时类路径中缺少的依赖关系,所以你需要解决这个问题

+0

问题是ClassNotFoundException也不例外,它的警告我无法捕获它 – asullaherc

0

这样,您就可以检查的DataFlavor同期为避免在UnsupportedFlavorException

public class ClipBoard { 
    public static void main(String args[]) { 
     Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); 
     try { 
      if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) { 
       String text = (String)t.getTransferData(DataFlavor.stringFlavor); 
       text=text.toUpperCase(); 
       StringSelection ss = new StringSelection(text); 
       Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

了解更多:http://mrbool.com/manipulating-clipboard-content-with-java/24758#ixzz4tta4bwNQ