gpt4 book ai didi

java - 在 JTextPane 中逐行读取文本

转载 作者:行者123 更新时间:2023-11-30 05:04:35 25 4
gpt4 key购买 nike

我正在编写一个带有语法突出显示的编辑器。我想要做的是获取当前行并解析它而不是整个文档。问题是我可能做错了,但我不知道为什么。这就是我正在做的事情:

public void keyReleased(KeyEvent e) {
System.out.println(e);
try {
int inizio = Utilities.getRowStart(ta, ta.getCaretPosition());
int fine = Utilities.getRowEnd(ta, ta.getCaretPosition());
System.out.println("Inizio: " + inizio + " - Fine: " + fine);
Element root = ta.getDocument().getDefaultRootElement();
if(inizio == fine) System.out.println("Mi trovo ad inizio riga");
else {
int linea = RXTextUtilities.getLineAtCaret(ta);
System.out.println("Linea: " + linea);
Element child = root.getElement(linea-1);
System.out.println("Testo corrente: " + child.getDocument().getLength() );
}
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

我对使用 javax.swing.text.Element 的理解是,我可以获得我想要的行(子项),然后对其进行处理,但是 child.getDocument.getLength( ) 给我整个文档的长度。我做错了什么?

编辑#1:

child.getDocument.getLength() 给我文档开头的长度,我期望当前行的长度。请参阅:我使用 int linea = RXTextUtilities.getLineAtCaret(ta); 获取行号,而不是使用 root.getElement(linea-1) 提取行,所以我希望 child.getDocument ().getLength() 会给我当前行的长度。

RXTextUtilities 链接:http://www.camick.com/java/source/RXTextUtilities.java

最佳答案

对于您的特定情况,您可以获得整个文档的长度,因为 child.getDocument() 实际上返回嵌入子级的文档。

您可以使用 child.getStartOffset()child.getEndOffset() 确定文档中的开始和结束,然后从整个文档中剪切出文本。

int start = child.getStartOffset();
int end = child.getEndOffset();
int length = end - start;
String text = child.getDocument().getText(start, length);

请注意,文本还包含 EOL 分隔符。

关于java - 在 JTextPane 中逐行读取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5522403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com