JTextPane pane = new JTextPane();
pane.setText("some text");
add(pane);
pane.addStyle("red", null);
Style red = pane.getStyle("red");
StyleConstants.setForeground(red, Color.RED);
pane.getStyledDocument().setCharacterAttributes(3, 1, red, true);
此窗格的内容看起来不错:除了'e'字符为红色外,所有字符都是普通字符。但是在'e'之后输入一些字符之后它也变红了。我如何摆脱这种行为?我只想设置给定字符的属性,我不希望它对其他人有任何影响。
答案 0 :(得分:1)
修改JTextPane的输入属性应该这样做:
pane.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent event) {
final JTextPane textPane = (JTextPane) event.getSource();
EventQueue.invokeLater(new Runnable() {
public void run() {
MutableAttributeSet inputAttr =
textPane.getInputAttributes();
inputAttr.removeAttribute(StyleConstants.Foreground);
}
});
}
});