Swing/DisabledHtmlLabel のバックアップの現在との差分(No.13)
- category: swing folder: DisabledHtmlLabel title: Htmlを使ったJLabelとJEditorPaneの無効化 tags: [Html, JLabel, JEditorPane, UIManager] 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)
で無効にします。
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
final JLabel label2 = new JLabel(HTML_TEXT) {
#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);
View in GitHub: Java, Kotlin解説
解説
- JDK-4783068 Components with HTML text should gray out the text when disabled - Java Bug System
-
JDK 1.7.0-ea-b55
で以下の描画は修正された - このサンプルを実行するとスクリーンショットとは異なり無効化ですべての文字列がグレーになる
-
- -
- 上段左
- 通常の
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
と同じフォントを使用するように設定editor2.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); editor2.setFont(UIManager.getFont("Label.font"));
- -
Html
レンダリングを無効化して、タグを文字列として表示する場合は、JLabelなどのHtmlレンダリングを無効化を参考にしてください。
- -
- Bug ID: 4783068 Components with HTML text should gray out the text when disabled
-
JDK 1.7.0-ea-b55
以上で、修正されている(上記のサンプルでも、無効化ですべての文字列がグレーになる)ようです。
-
参考リンク
- Bug ID: 4740519 HTML JLabel not greyed out on setEnabled(false)
- Swing - JLabel with html tag can not be disabled or setForegroud?!
参考リンク
- 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
レンダリングを無効化してタグを文字列として表示する場合のサンプル
-