1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
| package Clipboard;
import java.io.*;
import javax.swing.JTextPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import javax.swing.TransferHandler;
import javax.swing.JComponent;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection; //Was in use before
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.Clipboard;
public class JTextPaneHTMLTransfer {
public static void main(String [] args){
//1.a -- Create a jFrame
JFrame myFrame = new JFrame("MyTextEditor");
myFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
//1.b Create your jTextPane and add it to the frame
JTextPane myTextPane = new JTextPane();
myTextPane.setTransferHandler(new JTextPaneHTMLTransferHandler());
JScrollPane myScrollPane = new JScrollPane(myTextPane);
myFrame.add(myScrollPane, BorderLayout.CENTER);
//1.c - Show the frame
myFrame.setSize(400,300); //or myFrame.pack();
myFrame.setVisible(true);
}
}
class JTextPaneHTMLTransferHandler extends TransferHandler{
DataFlavor htmlFlavor = DataFlavor.stringFlavor;
public JTextPaneHTMLTransferHandler(){
System.out.println("Constructor of TransferHandler");
try{
htmlFlavor = new DataFlavor("text/html;class=java.lang.String");
}catch (Exception e){
System.out.println("Flavor creation failed");
}
}
public void exportToClipboard(JComponent comp, Clipboard clip, int action) {
System.out.println("method exportToClipboard");
super.exportToClipboard(comp, clip, action);
}
public int getSourceActions(JComponent c) {
System.out.println("method getSourceActions");
return COPY_OR_MOVE;
}
protected Transferable createTransferable(JComponent c){
System.out.println("method createTransferable");
JTextPane aTextPane = (JTextPane)c;
String textString = aTextPane.getSelectedText();
return new StringSelection(textString);
}
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors){
System.out.println("method canImport");
System.out.println(htmlFlavor);
System.out.println();
boolean retour = false;
for(int i=0; i<transferFlavors.length; i++){
System.out.println(transferFlavors[i]);
if(htmlFlavor.equals(transferFlavors[i])){
retour = true;
}
}
return retour;
}
public boolean importData(JComponent comp, Transferable t){
System.out.println("method importData");
if(canImport(comp, t.getTransferDataFlavors())){
System.out.println("canImport is true");
String transferString = "";
try{
transferString = (String)t.getTransferData(htmlFlavor);
}catch (Exception e){
System.out.println("transferString failed");
}
JTextPane srcTextPane = (JTextPane)comp;
srcTextPane.setContentType("text/html");
PrintWriter outputStream = null;
try {
outputStream = new PrintWriter(new FileWriter("C:\\Documents and Settings\\Marc\\My Documents\\Temp\\characteroutput.html"));
String l = transferString;
outputStream.println(l);
}catch (Exception e){
System.out.println("problem with file");
} finally {
if (outputStream != null) {
outputStream.close();
}
}
try{
srcTextPane.setPage("file:///C:/Documents%20and%20Settings/Marc/My%20Documents/Temp/characteroutput.html");
}catch (Exception e){
System.out.println("SetPage failed");
}
//srcTextPane.setText(transferString);
//System.out.println(transferString);
return true;
}
System.out.println("canImport is false");
return false;
}
} |
Partager