2016-10-21 4 views
0

J'ai enregistré Undoable Edit Listener dans JTextPane.Comment conserver Undoable Edit Listener précédent Lorsque set set editor editor mehtod est appelé

Cela fonctionne bien quand le kit de l'éditeur reste inchangé. Mais quand j'ouvre un autre fichier d'extension différente.

Je dois changer le kit d'éditeur de textpane.

Note: En fait textArea est une instance de JTextPane

if(ext.equals(".txt")){ 
try{ 
    // textArea.setText(null); 
textArea.setEditorKit(defaultkit); 

    String read=reader.readLine(); 
StringBuilder text = new StringBuilder(); 
    int offset =0; 
    //int test=0; 
    while (read !=null){ 
text.append(read); 
text.append('\n'); 
read = reader.readLine(); 


    } 
textArea.setText(text.toString()); 

}catch(IOException e){} 
//catch(BadLocationException e){} 

} 
else{ 

    try { 
FileInputStream fis = new FileInputStream(path);  


if(ext.equals(".rtf")){ 


textArea.setEditorKit(ek); 
textArea.getEditorKit().read(fis, textArea.getDocument(), 0); 


    } 

J'ai trouvé que lorsque la méthode de setEditorKit est appelé auditeur document de registre cesse d'exécuter sa fonction.

Quand j'enregistrer un autre annulable modifier listner il ne fonctionnera pas

textArea.setEditorKit(ek); 
textArea.addUndoableEditListener(new MyListener()); 
+0

' En fait, textArea est une instance de JTextPane' - alors pourquoi ne l'appelez-vous pas? – camickr

+0

J'ai d'abord utilisé jTextArea; Je l'ai appelé 'textArea' puis je dois changer l'éditeur pour des raisons de style. –

Répondre

0

Je trouve le problème et sa solution

j'utilisais nouvelle instance du document auditeur lors de l'enregistrement d'un autre document auditeur

MyDocumentListener dl = new MyDocumentListener(); 
textArea.getDocument().addUndoableEditListener(new MyDocumentListener()); 

à la place que je devrais utiliser à chaque fois:

textArea.getDocument().addUndoableEditListener(dl); 
1

Je dois changer le kit d'éditeur de textPane

Non, vous ne le faites pas.

Vous utilisez simplement:

textPane.setText(""); 

pour effacer les données.

Bien sûr, si vous faites cela, le même écouteur sera utilisé pour les deux fichiers. Donc, vous voulez remplacer l'écouteur d'édition chaque fois que vous changez le fichier de toute façon.

+0

Styled Editor Kit n'est pas utile pour le contenu "rtf" ... c'est pourquoi je dois changer le kit de l'éditeur. Il écrit simplement du texte simple dans le fichier .rtf –

+0

@MH, en tout cas la solution simple est juste de réinitialiser l'écouteur lorsque le kit de l'éditeur est modifié. L'annulation/rétablissement doit uniquement s'appliquer au nouveau fichier et non à l'ancien fichier. – camickr