我正在尝试使用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的位置删除文本。替换也发生了同样的情况。请帮助。
答案 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.