Я окрашиваю некоторые части линий в зависимости от их положения.
Используется библиотека 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 не должен быть в циклах?
Спасибо