概要

JLabelJEditorPaneで表示されるHtmlアンカータグのデフォルト文字色を変更するテストを行います。

サンプルコード

HTMLEditorKit kit = new HTMLEditorKit();
StyleSheet styleSheet = kit.getStyleSheet();
styleSheet.addRule("a{color:#FF0000;}");
JLabel label2 = new JLabel("<html><a href='" + MYSITE + "'>" + MYSITE + "</a>");
JLabel label3 = new JLabel("<html><a style='color:#00FF00' href='" + MYSITE + "'>" + MYSITE + "</a>");
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、Customize detault html link color in java swing - Stack Overflowを参考にして、 Htmlのアンカータグ(<a href='...'>...</a>)のデフォルト文字色を変更しています。

  • HTMLEditorKit#getStyleSheet()で取得可能なデフォルトのStyleSheetはグローバルなAppContextで管理されているため、これにa{color:#FF0000;}などのルールを追加するとSwingアプリ全体でアンカータグの文字色が変更される
    • JLabelは作成された時点のデフォルトStyleSheetを使用(一番上のJLabelはアンカーの文字色は青のまま)するが、JEditorPaneは現在のStyleSheetを使用(すべてのJEditorPaneでアンカーの文字色は赤になる)する?
    • 直接<a style='color:#00FF00'のようにスタイルを指定した場合は、こちらが優先される

参考リンク

コメント