gpt4 book ai didi

java - 根据位置给单词着色

转载 作者:行者123 更新时间:2023-11-29 09:16:41 24 4
gpt4 key购买 nike

我正在根据线条的位置为线条的某些部分着色。

使用的库是Swing。组件是 JTextPane。

StyledDocument doc = editorJTextPane.getStyledDocument();

Style styleRed = editorJTextPane.addStyle("Red", null);
StyleConstants.setForeground(styleRed, Color.red);
StyleConstants.setBold(styleRed, rootPaneCheckingEnabled);

Style styleGreen = editorJTextPane.addStyle("Green", null);
StyleConstants.setForeground(styleGreen, Color.green);
StyleConstants.setBold(styleGreen, rootPaneCheckingEnabled);

String[] allLines = editorJTextPane.getText().split("\n");

int offSet1 = 0;
int offSet2 = 5;

for(int i=0; i<allLines.length; i++)
{
line = allLines[i];
lineLength = line.length() + 1;

doc.setCharacterAttributes(offSet1, 4, editorJTextPane.getStyle("Red"), true);

doc.setCharacterAttributes(offSet2, 15, editorJTextPane.getStyle("Green"), true);

offSet1 = offSet1 + lineLength;
offSet2 = offSet2 + lineLength;
}

当任何一行, doc.setCharacterAttributes(offSet1, 4, editorJTextPane.getStyle("Red"), true);或者 doc.setCharacterAttributes(offSet2, 15, editorJTextPane.getStyle("Green"), true);

已评论,正在运行。当两者都存在时,我得到了错误,线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException在 javax.swing.text.DefaultStyledDocument.setCharacterAttributes(DefaultStyledDocument.java:507)

想知道 setCharacterAttributes 是否不应该在循环中?

谢谢

最佳答案

对于 DefaultStyledDocument.java 中的第 507 行,您必须使用 JDK 7

public void setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace) {
.......
AttributeSet sCopy = s.copyAttributes();//Line 507 here
.......
}

所以你传入的AttributeSet为null。你发布的代码对我有用,所以你的代码一定在其他地方做错了。

关于java - 根据位置给单词着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953255/

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