我根据他们的位置给部分线条着色。
使用的库是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不应该在循环中吗?
由于
答案 0 :(得分:0)
对于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。您发布的代码对我有用,因此您的代码必须在其他地方出错。