---
category: swing
folder: BorderPaintedFlat
title: JCheckBoxのチェックアイコンの縁をフラットに変更する
tags: [JCheckBox, Border, LookAndFeel]
author: aterai
pubdate: 2019-05-27T15:42:03+09:00
description: JCheckBoxのチェックアイコンの縁をフラットな描画に変更します。
image: https://drive.google.com/uc?id=1z6d-FJLYNyI9xxBhfRr4p1uvoE_cGCS3OQ
---
* 概要 [#summary]
`JCheckBox`のチェックアイコンの縁をフラットな描画に変更します。

#download(https://drive.google.com/uc?id=1z6d-FJLYNyI9xxBhfRr4p1uvoE_cGCS3OQ)

* サンプルコード [#sourcecode]
#code(link){{
Box box1 = Box.createVerticalBox();
box1.setBorder(BorderFactory.createTitledBorder("setBorderPainted: false"));

JCheckBox c0 = new JCheckBox("setBorderPaintedFlat: false");
c0.setBorderPainted(false);
c0.setBorderPaintedFlat(false);
box1.add(c0);
box1.add(Box.createVerticalStrut(5));

JCheckBox c1 = new JCheckBox("setBorderPaintedFlat: true");
c1.setBorderPainted(false);
c1.setBorderPaintedFlat(true);
box1.add(c1);
}}

* 解説 [#explanation]
- `setBorderPainted(false)`: `JCheckBox`自体の縁を描画しない
-- `setBorderPaintedFlat(false)`: `JCheckBox`のチェックアイコンの縁を`LookAndFeel`のデフォルトで描画する
--- `WindowsClassicLookAndFeel`や`MotifLookAndFeel`のデフォルトの縁は、立体的な描画になる
--- `WindowsLookAndFeel`のデフォルトの縁は、フラットな描画になるのでこのプロパティの影響を受けない
-- `setBorderPaintedFlat(true)`: `JCheckBox`のチェックアイコンの縁をフラットな描画にする
--- `NimbusLookAndFeel`のデフォルトの縁は、立体的な描画になるのでこのプロパティの影響を受けない
--- `MetalLookAndFeel`の縁は常にフラットで内側は立体的だがこのプロパティで内側の描画までフラットにはならない
- `setBorderPainted(true)`: `JCheckBox`自体の縁を描画する
-- `WindowsLookAndFeel`などのデフォルトは`false`
-- `NimbusLookAndFeel`では効果がない
-- `JCheckBox#setBorderPaintedFlat(...)`には影響しない

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JCheckBox.html#setBorderPaintedFlat-boolean- JCheckBox#setBorderPaintedFlat(...) (Java Platform SE 8)]
-- `Java 1.3`から導入されたプロパティであり、`WindowsClassicLookAndFeel`や`MotifLookAndFeel`のような古い`LookAndFeel`でのみ有効で最近の`LookAndFeel`ではほとんど意味がない
-- `Java 1.3`から導入されたプロパティであり、`WindowsClassicLookAndFeel`や`MotifLookAndFeel`のような古い`LookAndFeel`でのみ有効
-- このため最近の`LookAndFeel`ではほぼ無意味?

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