JTextPane删除第一行

时间:2011-08-02 14:50:01

标签: java swing jtextpane

我从Document获取JTextPane个对象,其中包含方法remove,但具有特定数量的字符textPane.getDocument().remove(begin,end)。我想删除整个第一行。

3 个答案:

答案 0 :(得分:6)

Limit Lines in Document。该类中的代码将向您展示如何获取行中字符的开始/结束偏移量。

或者您可以使用Utilities类。

getRowStart(...)
getRowEnd(...);

一旦知道了开始/结束,就可以使用remove()方法。

答案 1 :(得分:6)

下面显示了如果您正在考虑“以换行符结尾的内容”的行,如何删除JTextPane的第一行(Element)。如果您的文档中有更高级的内容,则可能需要做一些更精细的内容

JTextPane pane = new JTextPane();
pane.setText("I've got to go\nI can stay, though.\nThree lines of text?");
System.out.println(pane.getText());

System.out.println("\n\n\n removing! \n\n\n");
Element root = pane.getDocument().getDefaultRootElement();
Element first = root.getElement(0);
pane.getDocument().remove(first.getStartOffset(), first.getEndOffset());
System.out.println(pane.getText());

答案 2 :(得分:2)

如何创建第一行的字符串?如果代码告诉JTextPane要写的字符串是基于现有的String变量,如下面的

private String myString = "Hello, this is the first line!";
private JTextPane myPane = new JTextPane(...);
...
public void writeFirstLine(){
 myPane.setText(myString); 
}

然后您可以执行以下操作:

textPane.getDocument().remove(0, myString.length()); //this is assuming the remove function 
//excludes the end index and removes everything up to it.  Otherwise, it would be  
//myString.length()-1

如果您没有如上所述预先定义的第一行,并且您基本上只想删除第一个句点或其他特殊字符,则可以使用StreamTokenizer来查找目标分隔字符(这可以是EOL设置为有效的行[EOL]的结尾。您可以在streamtokenizer中将空格设置为有效,并在遇到字符计数器变量时立即添加它们。然后您基本上将每个标记转换为字符串在允许streamtokenizer继续前进并获取每个令牌的字符长度之前,在最初为null的String对象(您为每个令牌重复使用)内部,将其添加到字符计数器变量,然后再转到下一个令牌。当分隔符标点时到达字符,再次为最后一个标记运行加法运算,然后你的字符计数器变量将具有直到第一行末尾的字符数。在这种情况下,代码将是:

textPane.getDocument().remove(0,charCounter) //this is assuming the remove function 
//excludes the end index and removes everything up to it.  Otherwise, it would be charCounter-1
希望这会有所帮助 CCJ