将jTextPane文本复制到剪贴板

时间:2013-04-23 21:35:27

标签: java swing jtextpane

我有一个包含jTextPanejButton的表单,我已将jTextPane Accessible Description设置为text/html,现在我希望我点击jButtonjTextPane的内容复制到我的剪贴板,我试过这段代码:

 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        StringSelection stringSelection = new StringSelection (jTextPane1.getText());
        Clipboard clpbrd = Toolkit.getDefaultToolkit ().getSystemClipboard ();
        clpbrd.setContents (stringSelection, null);
    } 

但是当我过去时,它会将文本作为HTML格式传递。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

首先,Java中有2个剪贴板(一个是本地的,一个是系统的,你正在使用它)。 Here是使用系统剪贴板的示例。看看并试试这个getClipboardContents方法:

public String getClipboardContents(Clipboard clipboard) {
    String result = "";
    if (clipbloard != null){            
        //odd: the Object param of getContents is not currently used
        Transferable contents = clipboard.getContents(null);
        boolean hasTransferableText =
          (contents != null) &&
          contents.isDataFlavorSupported(DataFlavor.stringFlavor);
        if ( hasTransferableText ) {
          try {
            result = (String)contents.getTransferData(DataFlavor.stringFlavor);
          }
          catch (UnsupportedFlavorException ex){
            //highly unlikely since we are using a standard DataFlavor
            System.out.println(ex);
            ex.printStackTrace();
          }
          catch (IOException ex) {
            System.out.println(ex);
            ex.printStackTrace();
          }
        }
    }
    return result;
}

答案 1 :(得分:1)

当我使用Ctrl + C时,我将文本复制到剪贴板而没有HTML。您可以使用以下代码使用默认操作:

Action copy = new ActionMapAction("Copy", textPane, "copy-to-clipboard");
JButton copyButton = new JButton(copy);

有关其工作原理的详情,请参阅Action Map Action