• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:Htmlを使ったJLabelとJEditorPaneの無効化
#navi(../)
#tags(Html, JLabel, JEditorPane, UIManager)
RIGHT:Posted by &author(aterai); at 2007-12-24
*Htmlを使ったJLabelとJEditorPaneの無効化 [#g7a086cf]
``Html``を使った``JLabel``と、``JEditorPane``を``setEnabled(false)``で無効にします。
---
title: Htmlを使ったJLabelとJEditorPaneの無効化
tags: [Html, JLabel, JEditorPane, UIManager]
author: aterai
pubdate: 2007-12-24T23:18:44+09:00
description: Htmlを使ったJLabelと、JEditorPaneをsetEnabled(false)で無効にします。
---
* 概要 [#g7a086cf]
`Html`を使った`JLabel`と、`JEditorPane`を`setEnabled(false)`で無効にします。

-&jnlp;
-&jar;
-&zip;
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTK9vV2SGI/AAAAAAAAAW0/PIlAG2B9yZA/s800/DisabledHtmlLabel.png)

//#screenshot
#ref(http://lh5.ggpht.com/_9Z4BYR88imo/TQTK9vV2SGI/AAAAAAAAAW0/PIlAG2B9yZA/s800/DisabledHtmlLabel.png)

**サンプルコード [#m4ad0b68]
* サンプルコード [#m4ad0b68]
#code(link){{
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);
}}

**解説 [#r2f0a6d6]
* 解説 [#r2f0a6d6]
- 上段左
-- 通常の``JLabel``です。無効化すると文字がへこみます。
-- 通常の`JLabel`です。無効化すると文字がへこみます。

- 上段中
-- ``Html``タグを使った``JLabel``です。無効化しても文字色は変化しません。
-- `Html`タグを使った`JLabel`です。無効化しても文字色は変化しません。

- 上段右
-- ``Html``タグを使った``JLabel``です。無効化するとき、``setForeground``で文字色を変更していまが、``<font color='red'>``とした文字の色までは変化しません。
-- `Html`タグを使った`JLabel`です。無効化するとき、`setForeground`で文字色を変更していまが、`<font color='red'>`とした文字の色までは変化しません。

- 下段左
-- ``Html``タグを使った``JLabel``です。無効化するとき、``setForeground``で文字色を変更し、さらに文字色をグレースケール化しています。このサンプルでは、無効化している時にラベルのテキストやサイズを変更しても、表示は更新されません。
-- `Html`タグを使った`JLabel`です。無効化するとき、`setForeground`で文字色を変更し、さらに文字色をグレースケール化しています。このサンプルでは、無効化している時にラベルのテキストやサイズを変更しても、表示は更新されません。

- 下段中
-- ``Html``タグを使った``JEditorPane``です。無効化すると、すべての文字色が変化します。
-- `Html`タグを使った`JEditorPane`です。無効化すると、すべての文字色が変化します。

- 下段右
-- ``Html``タグを使った``JEditorPane``です。無効化すると、すべての文字色が変化します。以下のようにして、``JLabel``と同じフォントを使用するように設定しています。
-- `Html`タグを使った`JEditorPane`です。無効化すると、すべての文字色が変化します。以下のようにして、`JLabel`と同じフォントを使用するように設定しています。

#code{{
editor2.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
editor2.setFont(UIManager.getFont("Label.font"));
}}

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

----
- [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4783068 Bug ID: 4783068 Components with HTML text should gray out the text when disabled]
-- ``JDK 1.7.0-ea-b55``以上で、修正されている(上記のサンプルでも、無効化ですべての文字列がグレーになる)ようです。
-- `JDK 1.7.0-ea-b55`以上で、修正されている(上記のサンプルでも、無効化ですべての文字列がグレーになる)ようです。

**参考リンク [#o6dbac3d]
* 参考リンク [#o6dbac3d]
- [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4740519 Bug ID: 4740519 HTML JLabel not greyed out on setEnabled(false)]
- [http://forums.sun.com/thread.jspa?threadID=735190 Swing - JLabel with html tag can not be disabled or setForegroud?!]
- [https://forums.oracle.com/thread/1377943 Swing - JLabel with html tag can not be disabled or setForegroud?!]
- [[Hyperlinkを、JLabel、JButton、JEditorPaneで表示>Swing/HyperlinkLabel]]

**コメント [#wa1ddeea]
* コメント [#wa1ddeea]
#comment
#comment