Swing/RadioButtonMenuItemIcon のバックアップソース(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/RadioButtonMenuItemIcon へ行く。
TITLE:JRadioButtonMenuItemのチェックアイコンを変更する #navi(../) RIGHT:Posted by &author(aterai); at 2010-11-08 *JRadioButtonMenuItemのチェックアイコンを変更する [#i1788d15] JRadioButtonMenuItemのチェックアイコンを変更します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTRVf_tDmI/AAAAAAAAAhA/1F6GcDuJmcg/s800/RadioButtonMenuItemIcon.png) **サンプルコード [#a5678c05] #code(link){{ //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; 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); } } @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.fillRoundRect(x+3,y+3, getIconWidth()-6, getIconHeight()-6, 4, 4); g.fillOval(x+2,y+2, getIconWidth()-5, getIconHeight()-5); //g.fillArc(x+2,y+2,getIconWidth()-5, getIconHeight()-5, 0, 360); } } @Override public int getIconWidth() { return 12; } @Override public int getIconHeight() { return 12; } } }} **解説 [#s98aef9d] 上記のサンプルでは、WindowsLookAndFeel(Java1.6.0)で、JRadioButtonMenuItemのチェックアイコンがすこし歪?なので以下のように修正しています。 - default -- デフォルト - ANTIALIASING -- com.sun.java.swing.plaf.windows.WindowsIconFactory.javaのアイコンをg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)でアンチエイリアス - fillOval -- fillRoundRectではなく、fillOvalを使用 **参考リンク [#cb51cade] -[[JCheckBoxMenuItemのチェックアイコンを変更する>Swing/CheckBoxMenuItemIcon]] **コメント [#xa0be7a9] #comment