Swing/CheckBoxColor のバックアップ(No.10)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CheckBoxColor へ行く。
- 1 (2007-04-09 (月) 15:16:42)
- 2 (2007-04-09 (月) 18:21:10)
- 3 (2007-10-25 (木) 13:45:16)
- 4 (2007-12-21 (金) 18:42:18)
- 5 (2008-03-12 (水) 19:36:13)
- 6 (2008-04-10 (木) 15:38:25)
- 7 (2011-03-27 (日) 02:53:23)
- 8 (2014-11-09 (日) 02:46:09)
- 9 (2015-02-22 (日) 21:02:07)
- 10 (2016-01-09 (土) 01:47:08)
- 11 (2016-05-26 (木) 14:04:47)
- 12 (2017-08-15 (火) 13:47:47)
- 13 (2017-11-02 (木) 15:30:24)
- 14 (2019-06-05 (水) 20:33:24)
- 15 (2021-02-23 (火) 18:06:50)
- 16 (2024-09-09 (月) 16:46:23)
- title: JCheckBoxのチェックアイコンを変更 tags: [JCheckBox, Icon, UIManager] author: aterai pubdate: 2007-04-09T15:16:42+09:00 description: JCheckBoxで使用するチェックアイコンの色や形を変更します。
概要
JCheckBox
で使用するチェックアイコンの色や形を変更します。
Screenshot
Advertisement
サンプルコード
class MyCheckBoxIcon2 implements Icon {
private final Icon orgIcon = UIManager.getIcon("CheckBox.icon");
@Override public void paintIcon(Component c, Graphics g, int x, int y) {
orgIcon.paintIcon(c, g, x, y);
AbstractButton b = (AbstractButton) c;
ButtonModel model = b.getModel();
g.setColor(new Color(255, 155, 155, 100));
g.fillRect(x + 2, y + 2, getIconWidth() - 4, getIconHeight() - 4);
if (model.isSelected()) {
g.setColor(Color.RED);
g.drawLine(x + 9, y + 3, x + 9, y + 3);
g.drawLine(x + 8, y + 4, x + 9, y + 4);
g.drawLine(x + 7, y + 5, x + 9, y + 5);
g.drawLine(x + 6, y + 6, x + 8, y + 6);
g.drawLine(x + 3, y + 7, x + 7, y + 7);
g.drawLine(x + 4, y + 8, x + 6, y + 8);
g.drawLine(x + 5, y + 9, x + 5, y + 9);
g.drawLine(x + 3, y + 5, x + 3, y + 5);
g.drawLine(x + 3, y + 6, x + 4, y + 6);
}
}
@Override public int getIconWidth() {
return orgIcon.getIconWidth();
}
@Override public int getIconHeight() {
return orgIcon.getIconHeight();
}
}
View in GitHub: Java, Kotlin解説
org
- 通常の
JCheckBox
です。
- 通常の
check1
com/sun/java/swing/plaf/windows/WindowsIconFactory.java
から、XP
スタイルではない場合のアイコンをコピーし、一部色などを変更しています。
check2
UIManager.getIcon("CheckBox.icon")
で取得したオリジナルのアイコンを、アルファ値を設定した色で上書きし、チェック(レ)も色を変えて塗り潰しています。ただしチェックの形はWindowsIconFactory
からコピーしているので、別のLookAndFeel
では枠からはみ出してしまいます。
check3
javax.swing.plaf.metal.MetalCheckBoxIcon
をアルファ値を設定した色で上書きしています。
check1
~check3
で生成したアイコンを、それぞれJCheckBox#setIcon
で設定しています。
XP
スタイルで無い場合(Windows
環境以外ではテストしていない)、色を変更するだけなら、以下のようにする方法もあります。
System.setProperty("swing.noxp", "true");
UIManager.put("CheckBox.interiorBackground", new ColorUIResource(Color.GREEN));
UIManager.put("CheckBox.darkShadow", new ColorUIResource(Color.RED));
JCheckBox cb = new JCheckBox("check box");
参考リンク
- 進歩したSynth
SynthLookAndFeel
を使って、画像でチェックを描画するサンプルなどが紹介されています。