5

とすれば

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


...これの違いは何ですか

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

この

if(pos!= -1){
    d.remove(pos, word1.length());
    d.insertString(pos, word2.toUpperCase(), null);
}
4

2 に答える 2

8

最終的には同じことをします。

JTextArea ここのソースコードに移動すると、同じことをしていることがわかります。私はここにもメソッドをコピーしました。

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

電話をかける場合:

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

方法。

クラスのメソッドのソースコードは以下のとおりです

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     }
于 2012-05-12T08:23:35.960 に答える
0

私はBhavikに同意します。ドキュメントのリスナーでさえ、違いはわかりません。

txt.getDocument().addDocumentListener(new DocumentListener() {
    @Override
    public void removeUpdate(DocumentEvent pE) {
        System.out.println("removeUpdate: "+pE);
    }
    @Override
    public void insertUpdate(DocumentEvent pE) {
        System.out.println("insertUpdate: "+pE);
    }
    @Override
    public void changedUpdate(DocumentEvent pE) {
        System.out.println("changedUpdate: "+pE);
    }
});

どちらの場合も生成されます:

removeUpdate: [javax.swing.text.GapContent$RemoveUndo@97c87a4 hasBeenDone: true alive: true]
insertUpdate: [javax.swing.text.GapContent$InsertUndo@4ead24d9 hasBeenDone: true alive: true]
于 2014-01-28T23:00:40.833 に答える