我有一个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的新手。请指出正确的方向。
答案 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
不要告诉我这不是解决方案。 :)