@Override public void uninstallUI(final JComponent c) { radioButton.removeMouseListener(mouseAdapter); radioButton.removeItemListener(itemListener); radioButton.setIcon(null); radioButton = null; super.uninstallUI(c); }
private void updateIcon(final JRadioButton radioButton) { radioButton.setIcon( new Icon() { @Override public void paintIcon(final Component c, final Graphics g, final int x, final int y) { iconRect = new Rectangle(x, y, iconWidth, iconHeight); final Graphics2D g2d = (Graphics2D) g; final Object aa = LafUtils.setupAntialias(g2d); // Button size and shape final int round = iconWidth - shadeWidth * 2 - 2; final Rectangle iconRect = new Rectangle( x + shadeWidth, y + shadeWidth, iconWidth - shadeWidth * 2 - 1, iconHeight - shadeWidth * 2 - 1); final RoundRectangle2D shape = new RoundRectangle2D.Double( iconRect.x, iconRect.y, iconRect.width, iconRect.height, round, round); // Shade if (c.isEnabled()) { LafUtils.drawShade( g2d, shape, c.isEnabled() && c.isFocusOwner() ? StyleConstants.fieldFocusColor : StyleConstants.shadeColor, shadeWidth); } // Background final int radius = Math.round((float) Math.sqrt(iconRect.width * iconRect.width / 2)); g2d.setPaint( new RadialGradientPaint( iconRect.x + iconRect.width / 2, iconRect.y + iconRect.height / 2, radius, new float[] {0f, 1f}, getBgColors(radioButton))); g2d.fill(shape); // Border final Stroke os = LafUtils.setupStroke(g2d, borderStroke); g2d.setPaint( c.isEnabled() ? (rolloverDarkBorderOnly ? ColorUtils.getIntermediateColor( borderColor, darkBorderColor, getProgress()) : darkBorderColor) : disabledBorderColor); g2d.draw(shape); LafUtils.restoreStroke(g2d, os); // Check icon if (checkIcon > 0) { final ImageIcon icon = radioButton.isEnabled() ? CHECK_STATES.get(checkIcon) : DISABLED_CHECK; g2d.drawImage( icon.getImage(), x + iconWidth / 2 - icon.getIconWidth() / 2, y + iconHeight / 2 - icon.getIconHeight() / 2, radioButton); } LafUtils.restoreAntialias(g2d, aa); } @Override public int getIconWidth() { return iconWidth; } @Override public int getIconHeight() { return iconHeight; } }); }
public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JComponent renderer = null; if (value instanceof Icon) { Icon icon = (Icon) value; // Hack to fix problem where some plaf Icons cast the component to // various component classes. yikes! not very re-usable icons :( String className = (String) table.getValueAt(row, UIDefaultsTableModel.TYPE_COLUMN); if (className.contains("BasicIconFactory$RadioButtonMenuItemIcon") || className.contains("BasicIconFactory$CheckBoxMenuItemIcon") || className.contains("OceanTheme$IFIcon") || className.contains("MotifIconFactory$RadioButtonIcon") || className.contains("MotifIconFactory$CheckBoxIcon") || className.contains("MotifIconFactory$MenuArrowIcon") || className.contains("WindowsIconFactory$FrameButtonIcon") || className.contains("WindowsIconFactory$RadioButtonIcon")) { buttonIconRenderer.setIcon(icon); buttonIconRenderer.setSelected(true); renderer = buttonIconRenderer; } else if (className.contains("MetalIconFactory$RadioButtonIcon")) { radioIconRenderer.setIcon(icon); renderer = radioIconRenderer; } else if (className.contains("MetalIconFactory$RadioButtonMenuItemIcon") || className.contains("MetalIconFactory$CheckBoxMenuItemIcon") || className.contains("MetalIconFactory$MenuArrowIcon") || className.contains("MetalIconFactory$MenuItemArrowIcon")) { menuItemIconRenderer.setIcon(icon); menuItemIconRenderer.setSelected(true); renderer = menuItemIconRenderer; } else if (className.contains("MetalIconFactory$CheckBoxIcon") || className.contains("WindowsIconFactory$CheckBoxIcon")) { checkboxIconRenderer.setIcon(icon); checkboxIconRenderer.setSelected(true); renderer = checkboxIconRenderer; } } if (renderer != null) { // special hack renderer for icons needs to be colorized because // it doesn't extend RowRenderer setColors(table, row, isSelected); setBorder(renderer, hasFocus, isSelected); } else { // renderer == this renderer = (JComponent) super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); if (value instanceof Color) { Color color = (Color) value; float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); setIcon(ColorIcon.getIcon(color)); setText( "RGB=" + color.getRed() + "," + color.getGreen() + "," + color.getBlue() + " " + "HSB=" + String.format("%.0f%n", hsb[0] * 360) + "," + String.format("%.3f%n", hsb[1]) + "," + String.format("%.3f%n", hsb[2])); } else if (value instanceof Font) { Font font = (Font) value; setFont(font); setText(font.getFontName() + " size=" + font.getSize2D()); setIcon(null); } else if (value instanceof Icon) { setIcon((Icon) value); setText(""); } } return renderer; }
public void decorateLargeRadioButton(JRadioButton box) { box.setIcon(largeRadio); box.setSelectedIcon(largeRadioChecked); box.setOpaque(false); box.setFocusPainted(false); }