• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:Htmlを使ったJLabelとJEditorPaneの無効化
#navi(../)
RIGHT:Posted by [[terai]] at 2007-12-24
*Htmlを使ったJLabelとJEditorPaneの無効化 [#g7a086cf]
Htmlを使ったJLabelと、JEditorPaneをsetEnabled(false)で無効にします。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#m4ad0b68]
#code{{
final JLabel label2 = new JLabel(HTML_TEXT) {
  public void setEnabled(boolean b) {
    super.setEnabled(b);
    setForeground(b ? (Color) UIManager.get("Label.foreground")
                    : (Color) UIManager.get("Label.disabledForeground"));
    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]
-上段左
--通常のJLabelです。無効化すると文字がへこみます。

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

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

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

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

-下段右
--Htmlタグを使ったJEditorPaneです。無効化すると、すべての文字色が変化します。以下のようにして、JLabelと同じフォントを使用するように設定しています。
#code{{
editor2.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
editor2.setFont((Font)UIManager.get("Label.font"));
editor2.setFont(UIManager.getFont("Label.font"));
}}

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

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

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