Swing/DisabledHtmlLabel のバックアップ(No.17)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DisabledHtmlLabel へ行く。
- 1 (2007-12-24 (月) 23:18:44)
- 2 (2007-12-25 (火) 02:22:21)
- 3 (2008-01-10 (木) 10:39:43)
- 4 (2008-01-25 (金) 18:10:34)
- 5 (2008-02-07 (木) 19:06:10)
- 6 (2008-04-21 (月) 13:41:14)
- 7 (2009-11-03 (火) 00:03:19)
- 8 (2010-03-19 (金) 23:00:58)
- 9 (2012-06-28 (木) 02:06:17)
- 10 (2013-01-27 (日) 19:54:34)
- 11 (2013-08-24 (土) 22:43:25)
- 12 (2014-11-01 (土) 00:46:09)
- 13 (2014-11-25 (火) 03:03:31)
- 14 (2015-03-13 (金) 13:11:09)
- 15 (2016-05-26 (木) 14:31:35)
- 16 (2017-08-23 (水) 18:34:13)
- 17 (2017-12-07 (木) 11:42:38)
- 18 (2019-09-13 (金) 15:21:27)
- 19 (2021-05-05 (水) 05:10:48)
- 20 (2022-08-20 (土) 22:15:25)
- category: swing folder: DisabledHtmlLabel 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)で無効にします。 image:
概要
Html
を使ったJLabel
と、JEditorPane
をsetEnabled(false)
で無効にします。
Screenshot
Advertisement
サンプルコード
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解説
- JDK-4783068 Components with HTML text should gray out the text when disabled - Java Bug System
JDK 1.7.0-ea-b55
で、以下の描画は修正された- このサンプルを実行すると、スクリーンショットとは異なり、無効化ですべての文字列がグレーになる
- 上段左
- 通常の
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で表示