• category: swing folder: AnchorTextColor title: JLabelで表示するHtmlアンカータグの文字色を変更する tags: [JLabel, Html, JEditorPane, HTMLEditorKit, StyleSheet] author: aterai pubdate: 2015-03-23T00:19:09+09:00 description: JLabelやJEditorPaneで表示されるHtmlアンカータグのデフォルト文字色を変更するテストを行います。 image: https://lh4.googleusercontent.com/-tilzZhgELFk/VQ7ZWC4xblI/AAAAAAAAN1E/bR7KsSRQuRg/s800/AnchorTextColor.png

概要

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>)のデフォルト文字色を変更しています。

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

参考リンク

コメント