删除并替换JEditorPane中的选定文本

时间:2009-12-31 11:18:49

标签: java user-interface swing

我正在尝试使用Java Swing制作文本编辑器。在那我使用JEditorPane而不是JTextArea。我在删除所选文本和从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);
}

我在这里遇到的问题是,当我考虑来自getSelectionStart()和getSelectionEnd()的值时,他们不考虑换行符,但在使用子串时,正在考虑换行符。因此,如果我在一行之前使用此代码,在该行之前有5个换行符,则不会删除所选文本,而是从比所选文本少5的位置删除文本。替换也发生了同样的情况。请帮助。

3 个答案:

答案 0 :(得分:11)

使用JEditorPane.getDocument().remove()JEditorPane.getDocument().insertString()

答案 1 :(得分:0)

您可以使用replaceSelection()方法,该方法使用字符串替换所选文本。这是它的语法。如果要删除它,只需将空字符串作为参数传递。

jTextArea.replaceSelection("");

答案 2 :(得分:0)

int l1,l2;
l1=jTextArea1.getSelectionStart();
l2=jTextArea1.getSelectedText().length();
jTextArea1.getDocument().remove(l1, l2);



//This Will Remove only the selected text.