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 に答える