IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JTextPane + HTMLEditotKit + problème paste depuis Word


Sujet :

AWT/Swing Java

  1. #1
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut JTextPane + HTMLEditotKit + problème paste depuis Word
    Bonjour,

    J'ai un JTextPane auquel je rattache un HTMLEditorKit.
    Lorsque je veux copier le contenu du presse papier, cela fonctionne pour à peu près pour tout, sauf le texte copié depuis MS Word. (dans ce cas, il ne copie rien)
    Quelqu'un en connait-il la raison ?

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Ok, alors posons la question différament:

    Qu'est-ce qui pourrait faire croire à un JtextPane munis d'un HTMLEditorKit que le contenu actuel du presse-papier ne peut pas lui être assigné ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 19
    Par défaut
    Bonjour bonjour

    Je suis nouveau ici. Je sais que c'est un vieu thread mais j'ai peut-être une solution pour toi.

    Je travaille en ce moment a implémenter cut, copy et paste dans un JTextPane pour que ces actions fonctionnent avec n'importe quel autre programmes. En faisant mes recherches j'ai réalisé de quoi d'un peu stupide.

    Le contenu que tu reçois de Word ne peut pas tout de suite être interpréter correctement par ton JTextPane, mais si tu sauvegardes le contenu dans un fichier html (donc rien n'a changer) et que tu le réouvre tu vas maintenant pouvoir lire le fichier provenant de Word.

    Pourquoi? J'en ai pas la moindre idée.
    En tout cas voici mon programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
        }
    }

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Fichtre ! diantre ! Damned ! par St georges ! sang et trippes ! typhus et choléra ! (etc...)
    Même si cela fonctionne, je n'aimerais pas avoir à implémenter une telle machine de contournement

Discussions similaires

  1. [XL-2010] Problème de sauvegarde Word et Pdf depuis macro excel
    Par Cllem_501 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2014, 14h03
  2. [WD-2003] Problème d'envoi d'email depuis word
    Par lololebricoleur dans le forum Word
    Réponses: 3
    Dernier message: 17/01/2013, 23h28
  3. [XL-97] problème version de word lancé depuis une macro
    Par bahamutdragoon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/08/2010, 11h15
  4. [VB] Problème composants COM Word
    Par Vince dans le forum VBA Word
    Réponses: 5
    Dernier message: 08/12/2005, 10h18
  5. [Word] Problème de version Word
    Par delphicrous dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/09/2004, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo