0

我有一个 StyledDocument,我正在向其中添加一些样式。我想要一些适用于我创建的所有样式的默认(全局)样式。例如所有样式的全局背景,这样我就不必background为每个样式指定。

这是我试图实现的方式

    public void setUpStyles() {
        parentMSGStyle = historyPane.addStyle("parentmsgstyle", null);
        userNameStyle = historyPane.addStyle("usernamestyle", parentMSGStyle);
        StyleConstants.setBackground(parentMSGStyle, Color.GRAY);
        StyleConstants.setForeground(userNameStyle, Color.BLUE);
    }

这暂时不行。只有蓝色样式有效,但“灰色”样式无效。我是 StyledDocuments 的新手。请指出我正确的方向。

4

1 回答 1

0

看到这个后,我自己尝试过,也让我感到困惑。根据JAVA DOC应该显示childStyle = addStyle(String nm, parentStyle)以下行为:

将新样式添加到逻辑样式层次结构中。样式属性自下而上解析,因此子项中指定的属性将覆盖父项中指定的属性。

只要我们不给子元素设置背景颜色,它就不应该覆盖父样式的属性。

StyleConstants.setBackground(parentMSGStyle, Color.GREY);
StyleConstants.setForeground(userNameStyle, Color.BLUE);

如果我们现在尝试使用 打印文档的背景颜色document.getBackground(userNameStylee),它应该会打印GRAY并且它会打印。因此,由于未知原因,它不仅仅是在屏幕上进行。但令人惊讶的是,反过来也会奏效。也就是说,将 设置Forground为 parentStyle,将 Background 设置为childStyle.

StyleConstants.setForeground(parentMSGStyle, Color.BLUE);
StyleConstants.setBackground(userNameStyle, Color.GREY);

不要告诉我这不是解决方案。:)

于 2013-10-13T15:33:18.613 回答