Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

With or without the javax.swing.text.Document

Given that

JTextArea t = new JTextArea();
Document d = t.getDocument();
String word1 = "someWord";
String word2 = "otherWord"
int pos = t.getText().indexOf(word1,i);

What is the difference between ...
this

if(pos!= -1){
    t.replaceRange(word2.toUpperCase(), pos, pos+ word1.length());
}

and this

if(pos!= -1){
    d.remove(pos, word1.length());
    d.insertString(pos, word2.toUpperCase(), null);
}
like image 222
Jazz Avatar asked May 12 '12 08:05

Jazz


1 Answers

Ultimately it does the same thing.

Go to the source code of JTextArea here, where you can find that it is doing the same thing. I have copied the method here also where you can find that it is doing

d.remove(pos, word1.length());
    d.insertString(pos, word2.toUpperCase(), null);

in case of calling:

 t.replaceRange(word2.toUpperCase(), pos, pos+ word1.length());

method.

Source code of the method of the class is below

public void replaceRange(String str, int start, int end) {

    490         if (end < start) {
    491             throw new IllegalArgumentException  ("end before start");
    492         }
    493         Document doc = getDocument();
    494         if (doc != null) {
    495             try {
    496                 if (doc instanceof AbstractDocument) {
    497                     ((AbstractDocument)doc).replace(start, end - start, str,
    498                                                     null);
    499                 }
    500                 else {
    501                     doc.remove(start, end - start);
    502                     doc.insertString(start, str, null);
    503                 }
    504             } catch (BadLocationException e) {
    505                 throw new IllegalArgumentException  (e.getMessage());
    506             }
    507         }
    508     }
like image 102
Bhavik Ambani Avatar answered Sep 19 '22 02:09

Bhavik Ambani