如何在java swing中为样式文档设置全局样式

时间:2013-10-13 14:31:49

标签: java swing styles styleddocument

我有一个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的新手。请指出正确的方向。

1 个答案:

答案 0 :(得分:0)

在看到这个之后我自己也尝试过让我感到困惑。根据{{​​1}} JAVA DOC应显示以下行为:

  

在逻辑样式层次结构中添加新样式。样式属性   从下往上解析所以在孩子中指定的属性将   覆盖父级中指定的属性。

只要我们没有为孩子设置背景颜色,它就不应该覆盖父样式的属性。

childStyle = addStyle(String nm, parentStyle)

如果我们现在尝试使用StyleConstants.setBackground(parentMSGStyle, Color.GREY); StyleConstants.setForeground(userNameStyle, Color.BLUE); 打印文档的背景颜色,则应打印document.getBackground(userNameStylee)并执行此操作。 因此,由于未知原因,它不仅仅是在屏幕上进行。但令人惊讶的是反过来会起作用。也就是说,将GRAY设置为parentStyle,将背景设置为Forground

childStyle

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