• category: swing folder: CheckBoxMenuItemIcon title: JCheckBoxMenuItemのチェックアイコンを変更する tags: [JCheckBoxMenuItem, Icon, UIManager] author: aterai pubdate: 2009-09-14T14:19:06+09:00 description: JCheckBoxMenuItemのチェックアイコンを変更します。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTI5TuivhI/AAAAAAAAATg/nfren8EjliA/s800/CheckBoxMenuItemIcon.png hreflang:
       href: http://java-swing-tips.blogspot.com/2009/10/jcheckboxmenuitem-icon.html
       href: https://java-swing-tips.blogspot.com/2009/10/jcheckboxmenuitem-icon.html
       lang: en

概要

JCheckBoxMenuItemのチェックアイコンを変更します。

サンプルコード

UIManager.put("CheckBoxMenuItem.checkIcon", new Icon() {
  @Override public void paintIcon(Component c, Graphics g, int x, int y) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.translate(x, y);
    ButtonModel m = ((AbstractButton) c).getModel();
    g2.setPaint(m.isSelected() ? Color.ORANGE : Color.GRAY);
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                        RenderingHints.VALUE_ANTIALIAS_ON);
    g2.fillOval(0, 2, 10, 10);
    g2.dispose();
  }
#spanadd

#spanend
  @Override public int getIconWidth()  {
    return 14;
  }
#spanadd

#spanend
  @Override public int getIconHeight() {
    return 14;
  }
});
menu.add(new JCheckBoxMenuItem("checkIcon test"));
View in GitHub: Java, Kotlin

解説

JCheckBoxのチェックアイコンは、setIconメソッドで変更できますが、JCheckBoxMenuItemはチェックアイコンとは別のアイコンが設定されるので、UIManager.put("CheckBoxMenuItem.checkIcon", icon);を使用しています。
  • JCheckBoxのチェックアイコンはJCheckBox#setIcon(Icon)メソッドで変更可能
  • JCheckBoxMenuItemはチェックアイコンとは別のアイコンが設定されているため、setIcon(Icon)メソッドではなくUIManager.put("CheckBoxMenuItem.checkIcon", icon)を使用する必要がある
  • NimbusLookAndFeelなどではUIManager.put("CheckBoxMenuItem.checkIcon", icon)は無効なのでUIDefaultsを使用する必要がある

参考リンク

コメント