我正在使用netbeans开展一个项目。 我试图只在jTextPane中为位于文本多个位置的一个字符着色。 我尝试使用StyledDocument.setCharacterAttributes,但它允许我为至少2个字符着色,这不是我想要的。
目前我正在使用此代码:
StyledDocument doc = jTextPane1.getStyledDocument();
javax.swing.text.Style style = jTextPane1.addStyle("Red", null);
StyleConstants.setForeground(style, Color.RED);
doc.setCharacterAttributes(5, 2, jTextPane1.getStyle("Red"), true);
任何人都可以帮助解决这个问题。
提前谢谢。
答案 0 :(得分:2)
以下是着色单个字符的示例。
import java.awt.Color;
import javax.swing.*;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
public class ColoredTextTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = initgui();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
});
}
private static JFrame initgui() {
JFrame frame = new JFrame("Test");
JPanel panel = new JPanel();
StyledDocument doc = (StyledDocument) new DefaultStyledDocument();
JTextPane textpane = new JTextPane(doc);
textpane.setText("Test");
javax.swing.text.Style style = textpane.addStyle("Red", null);
StyleConstants.setForeground(style, Color.RED);
doc.setCharacterAttributes(0, 1, textpane.getStyle("Red"), true);
panel.add(textpane);
frame.add(panel);
return frame;
}
}
答案 1 :(得分:0)
您是否阅读了setCharacterAttributes
上的文档?
您将length
参数设置为2.将其设置为1.