概要
Html
を使ったJLabel
と、JEditorPane
をsetEnabled(false)
で無効にします。
Screenshot
Advertisement
サンプルコード
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"));
}
};
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"));
参考リンク
- 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
レンダリングを無効化してタグを文字列として表示する場合のサンプル