Swing/DisabledHtmlLabel のバックアップの現在との差分(No.8)
TITLE:Htmlを使ったJLabelとJEditorPaneの無効化
Posted by terai at 2007-12-24
Htmlを使ったJLabelとJEditorPaneの無効化
Htmlを使ったJLabelと、JEditorPaneをsetEnabled(false)で無効にします。- category: swing folder: DisabledHtmlLabel title: Htmlを使ったJLabelとJEditorPaneの無効化 tags: [Html, JLabel, JEditorPane, UIManager, Fixed] author: aterai pubdate: 2007-12-24T23:18:44+09:00 description: Htmlを使ったJLabelと、JEditorPaneをsetEnabled(false)で無効にします。 image:
概要
Html
を使ったJLabel
と、JEditorPane
をsetEnabled(false)
で無効にします。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spandel
final JLabel label2 = new JLabel(HTML_TEXT) {
#spanend
public void setEnabled(boolean b) {
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JLabel label2 = new JLabel(HTML_TEXT) {
#spanend
@Override public void setEnabled(boolean b) {
super.setEnabled(b);
setForeground(b ? UIManager.getColor("Label.foreground")
: UIManager.getColor("Label.disabledForeground"));
}
};
#spandel
final JEditorPane editor1 = new JEditorPane("text/html", HTML_TEXT);
#spanend
#spanadd
JEditorPane editor1 = new JEditorPane("text/html", HTML_TEXT);
#spanend
editor1.setOpaque(false);
editor1.setEditable(false);
解説
- 上段左
- 通常のJLabelです。無効化すると文字がへこみます。
解説
- JDK-4783068 Components with HTML text should gray out the text when disabled - Java Bug System
-
JDK 1.7.0-ea-b55
で以下の描画は修正された - このサンプルを実行するとスクリーンショットとは異なり無効化ですべての文字列がグレーになる
-
- 上段中
- Htmlタグを使ったJLabelです。無効化しても文字色は変化しません。
- 上段右
- Htmlタグを使ったJLabelです。無効化するとき、setForegroundで文字色を変更していまが、<font color='red'>とした文字の色までは変化しません。
- 下段左
- Htmlタグを使ったJLabelです。無効化するとき、setForegroundで文字色を変更し、さらに文字色をグレースケール化しています。このサンプルでは、無効化している時にラベルのテキストやサイズを変更しても、表示は更新されません。
- 下段中
- Htmlタグを使ったJEditorPaneです。無効化すると、すべての文字色が変化します。
- 下段右
- Htmlタグを使ったJEditorPaneです。無効化すると、すべての文字色が変化します。以下のようにして、JLabelと同じフォントを使用するように設定しています。
- -
- Htmlタグを使ったJEditorPaneです。無効化すると、すべての文字色が変化します。以下のようにして、JLabelと同じフォントを使用するように設定しています。
- 上段左
- 通常の
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レンダリングを無効化を参考にしてください。
参考リンク
- JDK-4783068 Components with HTML text should gray out the text when disabled - Java Bug System
- Swing - JLabel with html tag can not be disabled or setForegroud?!
- Hyperlinkを、JLabel、JButton、JEditorPaneで表示
- JLabelなどのHtmlレンダリングを無効化
-
Html
レンダリングを無効化してタグを文字列として表示する場合のサンプル
-
参考リンク
- Bug ID: 4740519 HTML JLabel not greyed out on setEnabled(false)
- Swing - JLabel with html tag can not be disabled or setForegroud?!
- Hyperlinkを、JLabel、JButton、JEditorPaneで表示