2013-04-23 3 views
4

У меня есть форма, которая содержит jTextPane и jButton, я установить jTextPaneAccessible Description к text/html, теперь я хочу, когда я нажимаю на jButton, чтобы скопировать содержимое jTextPane в мой буфер обмена, Я пробовал этот код:скопировать JTextPane текст в буфер обмена

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

но когда я прошёл, он прошел текст в формате HTML.

Как я могу решить эту проблему?

ответ

1

Прежде всего, есть два буфера обмена в Java (локальный и системный, который вы используете). 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; 
} 
+0

Как я вижу, проблема заключается в настройке или получении содержимого, его муравьином преобразовании текста из JTextpane в обычный текст (снятие HTML-тегов) – MadProgrammer

1

Когда я использую Ctrl + C, я получаю текст, скопированный в буфер обмена без HTML. Вы можете использовать действие по умолчанию с помощью следующего кода:

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

См Action Map Action для получения дополнительной информации о том, как это работает.

Смежные вопросы