Swing/RadioButtonMenuItemIcon の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/RadioButtonMenuItemIcon へ行く。
- Swing/RadioButtonMenuItemIcon の差分を削除
--- category: swing folder: RadioButtonMenuItemIcon title: JRadioButtonMenuItemのチェックアイコンを変更する tags: [JRadioButtonMenuItem, Icon, UIManager] author: aterai pubdate: 2010-11-08T16:26:30+09:00 description: JRadioButtonMenuItemのチェックアイコンを変更します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTRVf_tDmI/AAAAAAAAAhA/1F6GcDuJmcg/s800/RadioButtonMenuItemIcon.png --- * 概要 [#summary] `JRadioButtonMenuItem`のチェックアイコンを変更します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTRVf_tDmI/AAAAAAAAAhA/1F6GcDuJmcg/s800/RadioButtonMenuItemIcon.png) * サンプルコード [#sourcecode] #code(link){{ //com.sun.java.swing.plaf.windows.WindowsIconFactory.java // com.sun.java.swing.plaf.windows.WindowsIconFactory.java class RadioButtonMenuItemIcon1 implements Icon, UIResource, Serializable { @Override public void paintIcon(Component c, Graphics g, int x, int y) { AbstractButton b = (AbstractButton) c; ButtonModel model = b.getModel(); if (b.isSelected()) { Graphics2D g2 = (Graphics2D) g.create(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.fillRoundRect( x + 3, y + 3, getIconWidth() - 6, getIconHeight() - 6, 4, 4); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); g2.dispose(); } } @Override public int getIconWidth() { return 12; } @Override public int getIconHeight() { return 12; } } class RadioButtonMenuItemIcon2 implements Icon, UIResource, Serializable { @Override public void paintIcon(Component c, Graphics g, int x, int y) { AbstractButton b = (AbstractButton) c; ButtonModel model = b.getModel(); if (b.isSelected()) { g.fillOval(x + 2, y + 2, getIconWidth() - 5, getIconHeight() - 5); } } @Override public int getIconWidth() { return 12; } @Override public int getIconHeight() { return 12; } } }} * 解説 [#explanation] 上記のサンプルでは、`UIManager.put("RadioButtonMenuItem.checkIcon", icon)`を使用して`JRadioButtonMenuItem`のチェックアイコンを変更しています。 - `default` -- デフォルト -- `WindowsLookAndFeel`(`Java1.6.0`)で`JRadioButtonMenuItem`のチェックアイコンが歪になる場合がある -- `Java1.6.0`の`WindowsLookAndFeel`で`JRadioButtonMenuItem`のチェックアイコンが歪になる場合がある - `ANTIALIASING` -- `com.sun.java.swing.plaf.windows.WindowsIconFactory`のアイコンを`g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)`でアンチエイリアス - `fillOval` -- `fillRoundRect`ではなく`fillOval`を使用するチェックアイコンを設定 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JRadioButtonMenuItem.html JRadioButtonMenuItem (Java Platform SE 8)] - [[JCheckBoxMenuItemのチェックアイコンを変更する>Swing/CheckBoxMenuItemIcon]] * コメント [#comment] #comment - `Windows 7`でテストするとアイコンの歪みはないので、修正された模様。 -- &user(aterai); &new{2012-08-08 (水) 19:51:09}; #comment