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

avec Java Discussion :

Conflit de récupération de contenu de JTextPane Java


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Conflit de récupération de contenu de JTextPane Java
    Bonjour,
    ça fait une semaine de recherche de mon problème et je ne trouve pas de solution, mon problème est le suivant:
    j'ai une panel contenant un JTextePane lié à un éditeur. ce JtextePane peut être instancié plusieurs fois (à la demande) et quand je voulais récupérer le contenu des JTextePane crées il associé le dernier texte édité à tous les autres JTextePane.
    J’espère que mon problème est clair.
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    tu as du code a montrer pour que l'on comprenne mieux ?
    Développeur Java
    Site Web

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Je veux savoir comment je puisse garder tous les instances de la classe éditeur après que je saisie le contenu dedans et le récupérer par la suite


    voila comment code ,comment il est structuré:

    la classe Editeur:

    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
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    public class Edition_Panel extends JPanel{
     
    /** Fields list */
     
    public static  JTextField titreAss;
     
    public  static JTextPane txtPane;
     
    public JLabel labelColor;  //la couleur
     
    * Creates an instance of the CListeners class.
     
    * @see CListeners
     
    */
     
    Traitement_Edition m_CListeners ;
     
    /**
     
     * Creates an instance of the UndoManager class.
     
     * @see UndoManager
     
     */
     
    public UndoManager m_Undo = new UndoManager();
     
    /**
     
    * Creates an instance of the DefaultStyledDocument class.
     
    * @see DefaultStyledDocument
     
    */
     
    /**
     
    * Creates an instance of the RTFEditorKit class.
     
    * @see RTFEditorKit
     
    */
     
    public RTFEditorKit m_Rtf;
     
    /**
     
    * Defines the constructor of FrameEditorTxT class.
     
    * @param sTitle
     
    */
     
    public Edition_Panel(String t,Object position,Font f,boolean exo,boolean ass,DefaultStyledDocument m_Document ){
     
    super();
     
    //Espace_Edition text_Panel = new Espace_Edition("Titre Formation",FlowLayout.LEFT);
     
    m_CListeners = new Traitement_Edition(this);
     
    /*try {
     
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
     
    SwingUtilities.updateComponentTreeUI(this);
     
    } 
     
    catch (Exception e) {
     
    System.out.println("FrmUsers.FrmUsers : impossible d'appliquer le thème du système");
     
    }*/
     
    JPanel panTools = new JPanel();
     
    panTools.setLayout(new FlowLayout());
     
    panTools.add(Display_ToolBar);
     
    panTools.add(File_ToolBar);
     
            this.setBorder(BorderFactory.createRaisedBevelBorder());
     
    //this.add(text_Panel);
     
    JPanel panTitre = new JPanel();
     
    JPanel panText = new JPanel();
     
    BoxLayout bj = new BoxLayout (this, BoxLayout.Y_AXIS);
     
    this.setLayout(bj);  
     
    //this.setLayout(new BorderLayout(20,20));
     
    this.add(panTitre);
     
    this.add(panTools);
     
    this.add(panText);    /////Ajouter toujours le panels d'ecriture à la fin
     
    panTitre.setLayout(new FlowLayout(FlowLayout.LEFT));
     
    //panTitre.setLayout(new FlowLayout());
     
       titre=new JLabel(t);
     
    titre.setFont(f);
     
    this.setPreferredSize(new Dimension(700, 500));
     
    this.setMaximumSize(new Dimension(700, 500));
     
    this.setMinimumSize(new Dimension(700, 500));
     
    panTitre.add(titre,position);
     
    panTools.setPreferredSize(new Dimension(700,50));
     
            panTitre.setPreferredSize(new Dimension(700,40));
     
            panText.setPreferredSize(new Dimension(700,250));
     
    m_Rtf  = new RTFEditorKit(); 
     
    StyleContext context  = new StyleContext();
     
    m_Document  = new DefaultStyledDocument(context);
     
    panText.setLayout(new BorderLayout());
     
    txtPane= new JTextPane();
     
    txtPane.setMargin(new Insets(10, 10, 10, 10));
     
    txtPane.addCaretListener(m_CListeners);
     
    txtPane.setEditorKit(m_Rtf);
     
    txtPane.setDocument(m_Document);
     
    if(exo==true)
     
    {
     
    panText.add(enc,BorderLayout.NORTH);
     
    this.add(panExo);
     
            panText.setPreferredSize(new Dimension(700,150));
     
            this.setPreferredSize(new Dimension(700, 250));
     
    this.setMaximumSize(new Dimension(700, 250));
     
    this.setMinimumSize(new Dimension(700, 250));
     
    }
     
    if(ass==true)
     
    {
     
    panTitre.remove(titre);
     
    panTitre.add(titreAss);
     
    //titreAss.addPropertyChangeListener(m_CListeners);
     
    }
     
    Font oFont = new Font(txtPane.getFont().getFamily(), txtPane.getFont().getStyle(), 12);
     
    txtPane.setFont(oFont);
     
    txtPane.getDocument().addUndoableEditListener(m_CListeners);
     
    panText.add(txtPane,BorderLayout.SOUTH);
     
            //panText.setBackground(new Color(255,0,0));
     
    JScrollPane sclScroll = new JScrollPane(txtPane);
     
    panText.add(sclScroll);
     
    txtPane.addCaretListener(new CaretListener(){
     
           @Override
     
                public void caretUpdate(CaretEvent e) {
     
                    int pos = e.getDot();
     
                    int row = 0, column=0;
     
                    try { 
     
    int length = txtPane.getDocument().getLength();
     
    String text = txtPane.getDocument().getText(0, length).replaceAll("\r", "");
     
    if(pos+1<=text.length()){
     
       text = text.substring(0, pos+1);
     
       column--;
     
    } 
     
    while (text.contains("\n")) {
     
       row++;
     
       int start = text.indexOf("\n");
     
       if (text.length() - start >= 1) {
     
           text = text.substring(start+1, text.length());
     
       }
     
    }
     
    column += text.length();
     
    } catch (BadLocationException e1) {
     
    e1.printStackTrace();
     
    }
     
    }
     
            });
     
    //////////////////////////////Vue.Fenetre1.panel21.add(this);
     
    }
     
    public void setTitreGrain(String t){
     
    this.titre.setText(t);
     
    }
     
    public String getTitContenuAss(){
     
    return this.titreAss.getText();
     
    }
     
    public void append(String s) {
     
    try {
     
    Document doc = txtPane.getDocument();
     
    doc.insertString(doc.getLength(), s + "\n", txtPane.getStyle("default"));
     
    } catch (BadLocationException e) {
     
    e.printStackTrace();
     
    }
     
    }
     
    }
    et l'appel est:
    voila la classe qui fait l'instanciation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DefaultStyledDocument m_Document = null;
     
          Edition_Panel pp=new Edition_Panel("Grain Pédagogique", FlowLayout.CENTER, f,false,false,m_Document);
    et à la récupération:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       text.setText(Vue.Edition_Panel.txtPane.getDocument().getText(0,Vue.Edition_Panel.txtPane.getDocument().getLength()));

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static  JTextField titreAss;
     
    public  static JTextPane txtPane;
    Les variables sont statiques, donc "partagées" entre toutes les instances (une seule instance de JTextField et de JTextPane, pour toutes les instances de Edition_Panel).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    alors il me faut une méthode pour pouvoir utiliser ces variables en dorhs de sa classe---> donc je doit utiliser les getteurs ???peut etre!!!

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faut surtout qu'elles ne soient pas statiques. Là, elles sont public, donc accessibles sans getter ni setter (ce serait mieux qu'elles soient private, et accessibles par accesseur et mutateur, mais c'est un autre problème que celui que tu as).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Je vous remercie pour ces remarques:

    effectivement ,l'erreur est que j'ai définit une variable de classe(static) et non pas une variable pour chaque instance. de classe.

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    salut,
    mais là je me coince dans un autre problème les amis avez-vous une idée sur la possibilité de récupérer tous les JTextPane crée (càd le contenu dedans)??
    sachant que cet éditeur comporte un JLabel pour le titre de paragraphe.
    j'ai pensé à un vecteur ou je vais stocker le contenu ???mais à la récupération comment est-il possible de récupérer le bon contenu???avec le titre en question ,sachant que je peux crée plusieurs instance d'éditeur avec le même nom(plusieurs Introduction,plusieurs conclusion)dans un même contenu.

    Merci bien.

  9. #9
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    j'avoue ne pas trop comprendre ta question.

    Tu as un unique JTextPane dans ta classe Edition_Panel il s'appelle txtPane.
    Comme te l'a dit joel, ne le mets pas en static (variable de classe) mais en variable "d'objet" propre à chaque instance de ton Edition_Panel. Je te conseille également de le mettre en private et d'y ajouter un getter et setter.
    Du coup tu y accèderas en faisant dans ta classe Edition_Panel .

    Mais peut être que ta question porte sur la multiplicité des instances Edition_Panel et que tu cherches dans quelle instance tu as le bon txtPane. Réponds déjà a ca on y verra plus clair.
    Développeur Java
    Site Web

  10. #10
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    par ailleurs, reprend ton code source corrigé comme on te le conseille et reposte le nous dans ta réponse.
    Essaie aussi d'indenter ton code pur qu'il soit lisible.
    Et adopte des conventions d'écriture du genre maVariable ou ma_variable, mais là tu mélanges tous les styles.
    Marc,
    Développeur Java
    Site Web

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    salut,
    peut etre j'ai mal expliquer mon probléme,

    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
    public class Edition_Panel extends JPanel{
     
    private JLabel montitreLabel;
    private JTextPane txtPane;
     
    public Edition_Panel(string titreText){
     
    StyleContext context  = new StyleContext();
    		DefaultStyledDocument m_Document  = new DefaultStyledDocument(context);
    		panText.setLayout(new BorderLayout());
    		txtPane= new JTextPane();
    		txtPane.setMargin(new Insets(10, 10, 10, 10));
    		txtPane.addCaretListener(m_CListeners);
    		txtPane.setEditorKit(m_Rtf);
    		txtPane.setDocument(m_Document);
     
     
     
    montitreLabel.setText(titreText);
     
     
     
    ///Setteurs et getteurs
     
    }
     
     
    }
    L'appel se fait dans la classe qui implémente ActionListener de bouton créer ,à chaque clic je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edition_Panel e=new Edition_Panel("titreGrain");
    Le probléme est comment je peut récupérer l'ensemble des Edition_Panel créé,je parle de contenu de tous les JTextPane crée

  12. #12
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Bien on avance,

    Je n'ai pas tout ton code source, mais à mon avis tu dois ajouter tes EditionPanel (désolé pour tes _ mais je te migre vers la notation utilisée par tous les développeurs java) à un container d'un JFrame.
    Sinon je vois mal la cohérence de ton appli et de ses IHM.

    Dans cette classe dérivée de JFame, qui je n'en doute pas sera unique, tu peux donc parcourir l'ensemble de tes EditionPanel et sélectionner celui que tu cherches.
    Développeur Java
    Site Web

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Salut,
    je vous remercie infiniment pour l'aide et les remarques que vous l'avez fait à propos de mon problème
    j'ai réussi à le réglé par l'utilisation d'un tableau de 2 dimension contenant l'identifiant de contenu édité et le nom de fichier créé avec l'éditeur par Txtpane.

    merci bien .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération du contenu HTML d'un JTextPane
    Par bomehc dans le forum Composants
    Réponses: 8
    Dernier message: 22/12/2011, 11h21
  2. [Servlet] Récupération du Content-type en Java
    Par hdd dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/02/2006, 16h38
  3. Réponses: 1
    Dernier message: 29/11/2005, 17h32
  4. Récupération du contenu d'un page avec SYS.UTL_HTTP
    Par squalito dans le forum Oracle
    Réponses: 1
    Dernier message: 09/10/2005, 06h57
  5. la récupération du contenu en pl/sql
    Par squalito dans le forum PL/SQL
    Réponses: 4
    Dernier message: 25/01/2005, 17h25

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