2009-12-31 7 views
2

J'essaie de créer un éditeur de texte à l'aide de Java Swing. En ce que j'utilise JEditorPane au lieu de JTextArea. Je suis confronté à des problèmes dans la suppression du texte sélectionné et le remplacement du texte sélectionné à partir du JEditorPane. Le code J'utilise est:Suppression et remplacement du texte sélectionné dans JEditorPane

public void delete(JEditorPane txt) 
{ 

    int start = txt.getSelectionStart(); 
    int end = txt.getSelectionEnd(); 
    String startText = txt.getText().substring(0,start); 
    String endText = txt.getText().substring(end,txt.getText().length()); 
    txt.setText(startText + endText); 
} 

Le problème que je suis confronté est que, quand je considère la valeur de getSelectionStart() et getSelectionEnd(), ils ne considèrent pas le caractère de nouvelle ligne, mais en utilisant substring, le caractère de nouvelle ligne est considéré. Donc, si j'utilise ce code sur une ligne devant laquelle il y a 5 caractères de nouvelle ligne, alors au lieu de supprimer le texte sélectionné, le texte est supprimé d'une position qui est 5 moins que le texte sélectionné. Il en va de même avec Replace. S'il vous plaît aidez.

+0

Je pense qu'ils considèrent tous les deux sauts de ligne, mais Windows utilise en fait deux caractères pour saut de ligne (retour chariot + saut de ligne) et qui semble causer de la confusion ici. –

Répondre

11

Utilisez JEditorPane.getDocument().remove() et JEditorPane.getDocument().insertString()

+3

Certainement. Note: 'remove' prend' len' comme deuxième paramètre, donc vous devrez utiliser 'end-start'. –

+0

Merci, cela a fonctionné. – Logan

0

Vous pouvez utiliser la méthode replaceSelection() qui prend une chaîne pour remplacer le texte sélectionné. Voici sa syntaxe. Quand vous voulez le supprimer, passez simplement une chaîne vide en paramètre.

jTextArea.replaceSelection(""); 
0
int l1,l2; 
l1=jTextArea1.getSelectionStart(); 
l2=jTextArea1.getSelectedText().length(); 
jTextArea1.getDocument().remove(l1, l2); 



//This Will Remove only the selected text. 
Questions connexes