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