2
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'之后输入一些字符后,它也会变红。我该如何摆脱这种行为?我只想设置给定字符的属性,我不希望它对其他人产生任何影响。

4

1 回答 1

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);
            }
        });
    }
});
于 2013-10-06T14:32:04.597 回答