gpt4 book ai didi

java - 如何在 JEditorPane 中解决此问题

转载 作者:行者123 更新时间:2023-12-02 04:36:06 30 4
gpt4 key购买 nike

我尝试在 JEditorPane 的文本中添加一些 HTML/CSS。此外,setText() 方法在此类中被重写。

当我在 Pane 中插入超过 14 行,然后运行 ​​makeLineHighlight() 或在 Pane 文本上运行 makeLineHighlight() 两次时,某些行会被删除或者我有一些异常(exception)。当 Pane 的文本更改(我在循环中检查它)时,我使用重写的 setText() 在 Pane 中创建数字列表。

当我删除 super.setText() 时,代码可以正常工作。

 @Override
public void setText(String text) {

String bufferText = "<ol style=\"margin-left: 20px;" +
"font-family: Courier New, Courier, monospace;\" >";

String[] linesBuffer = text.split(System.lineSeparator());
for (int i = 0; i < linesBuffer.length; i++) {

bufferText += "<li style=\"\">" + linesBuffer[i] + "</li>" + System.lineSeparator();

}
bufferText += "</ol>";
int pos=this.getCaretPosition();
super.setText(bufferText);

if(pos>getDocument().getLength())pos=getDocument().getLength();
try {
setCaretPosition(pos + 1);
}catch (IllegalArgumentException e){
setCaretPosition(pos);
}
lastText = this.getText();

}

public void makeLineHighlight(int lineNumber){
String bufferText="";

String[] linesOfText=super.getText().split(System.lineSeparator());
for (int i = 0; i < linesOfText.length; i++) {
if(i==(6+((lineNumber-1)*3))){
bufferText+="<li style=\"background-color: #EA2A40\">\n "+linesOfText[i+1]+"\n</li>\n";
i+=2;
continue;
}
bufferText+=linesOfText[i]+System.lineSeparator();

}

super.setText(bufferText);

}

最佳答案

您的输入文本是 HTML/CSS 。请注意,HTML 中的换行符是 <br /> ,不是System.lineSeparator()你使用 \n在您的新 HTML 代码中,它们可能与 System.lineSeparator() 相同.
异常原因是:
- 第一次调用makeLineHighlight ,通过这行代码 bufferText+="<li style=\"background-color: #EA2A40\">\n "+linesOfText[i+1]+"\n</li>\n"; , 文本行数增加。其中(新行)是 <li style="background-color: #EA2A40">
- 第二次调用makeLineHighlight ,您的新 HTML 格式错误。喜欢这个:

<li style="background-color: #EA2A40">
<li style="background-color: #EA2A40">
</li>

因此,一个可能的解决方案是使用 <br />而不是System.lineSeparator() ,另一个是避免使用 \n在您的新 HTML 代码中。

请注意 <br />也写为<br/><br> ...

关于java - 如何在 JEditorPane 中解决此问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56551771/

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