TITLE:Htmlを使ったJLabelとJEditorPaneの無効化

Posted by at 2007-12-24

Htmlを使ったJLabelとJEditorPaneの無効化

`Htmlを使ったJLabelと、JEditorPanesetEnabled(false)`で無効にします。

  • &jnlp;
  • &jar;
  • &zip;
DisabledHtmlLabel.png

サンプルコード

final JLabel label2 = new JLabel(HTML_TEXT) {
  @Override public void setEnabled(boolean b) {
    super.setEnabled(b);
    setForeground(b ? UIManager.getColor("Label.foreground")
                    : UIManager.getColor("Label.disabledForeground"));
  }
};
final JEditorPane editor1 = new JEditorPane("text/html", HTML_TEXT);
editor1.setOpaque(false);
editor1.setEditable(false);
View in GitHub: Java, Kotlin

解説

  • 上段左
    • 通常の`JLabel`です。無効化すると文字がへこみます。
  • 上段中
    • `Htmlタグを使ったJLabel`です。無効化しても文字色は変化しません。
  • 上段右
    • `Htmlタグを使ったJLabelです。無効化するとき、setForegroundで文字色を変更していまが、<font color='red'>`とした文字の色までは変化しません。
  • 下段左
    • `Htmlタグを使ったJLabelです。無効化するとき、setForeground`で文字色を変更し、さらに文字色をグレースケール化しています。このサンプルでは、無効化している時にラベルのテキストやサイズを変更しても、表示は更新されません。
  • 下段中
    • `Htmlタグを使ったJEditorPane`です。無効化すると、すべての文字色が変化します。
  • 下段右
    • `Htmlタグを使ったJEditorPaneです。無効化すると、すべての文字色が変化します。以下のようにして、JLabel`と同じフォントを使用するように設定しています。
editor2.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
editor2.setFont(UIManager.getFont("Label.font"));

`Html`レンダリングを無効化して、タグを文字列として表示する場合は、JLabelなどのHtmlレンダリングを無効化を参考にしてください。


参考リンク

コメント