FileDocCategorySizeDatePackage
MetalButtonUI.javaAPI DocJava SE 6 API5806Tue Jun 10 00:26:50 BST 2008javax.swing.plaf.metal

MetalButtonUI

public class MetalButtonUI extends BasicButtonUI
MetalButtonUI implementation

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see {@link java.beans.XMLEncoder}.

version
1.39 11/30/05
author
Tom Santos

Fields Summary
private static final MetalButtonUI
metalButtonUI
protected Color
focusColor
protected Color
selectColor
protected Color
disabledTextColor
Constructors Summary
Methods Summary
protected javax.swing.plaf.basic.BasicButtonListenercreateButtonListener(javax.swing.AbstractButton b)

        return super.createButtonListener(b);
    
public static javax.swing.plaf.ComponentUIcreateUI(javax.swing.JComponent c)

 
    // ********************************
    //          Create PLAF
    // ********************************
         
        return metalButtonUI;
    
protected java.awt.ColorgetDisabledTextColor()

        disabledTextColor = UIManager.getColor(getPropertyPrefix() +
                                               "disabledText");
	return disabledTextColor;
    
protected java.awt.ColorgetFocusColor()

        focusColor = UIManager.getColor(getPropertyPrefix() + "focus");
	return focusColor;
    
protected java.awt.ColorgetSelectColor()

        selectColor = UIManager.getColor(getPropertyPrefix() + "select");
	return selectColor;
    
public voidinstallDefaults(javax.swing.AbstractButton b)

        super.installDefaults(b);
    
protected voidpaintButtonPressed(java.awt.Graphics g, javax.swing.AbstractButton b)

        if ( b.isContentAreaFilled() ) {
            Dimension size = b.getSize();
	    g.setColor(getSelectColor());
	    g.fillRect(0, 0, size.width, size.height);
	}
    
protected voidpaintFocus(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle viewRect, java.awt.Rectangle textRect, java.awt.Rectangle iconRect)


        Rectangle focusRect = new Rectangle();
	String text = b.getText();
	boolean isIcon = b.getIcon() != null;

        // If there is text
        if ( text != null && !text.equals( "" ) ) {
  	    if ( !isIcon ) {
	        focusRect.setBounds( textRect );
	    }
	    else {
	        focusRect.setBounds( iconRect.union( textRect ) );
	    }
        }
        // If there is an icon and no text
        else if ( isIcon ) {
  	    focusRect.setBounds( iconRect );
        }

        g.setColor(getFocusColor());
	g.drawRect((focusRect.x-1), (focusRect.y-1),
		  focusRect.width+1, focusRect.height+1);

    
protected voidpaintText(java.awt.Graphics g, javax.swing.JComponent c, java.awt.Rectangle textRect, java.lang.String text)

	AbstractButton b = (AbstractButton) c;			     
	ButtonModel model = b.getModel();
	FontMetrics fm = SwingUtilities2.getFontMetrics(c, g);
        int mnemIndex = b.getDisplayedMnemonicIndex();

	/* Draw the Text */
	if(model.isEnabled()) {
	    /*** paint the text normally */
	    g.setColor(b.getForeground());
	}
	else {
	    /*** paint the text disabled ***/
	    g.setColor(getDisabledTextColor());
        }
        SwingUtilities2.drawStringUnderlineCharAt(c, g,text,mnemIndex,
                                  textRect.x, textRect.y + fm.getAscent());
    
public voiduninstallDefaults(javax.swing.AbstractButton b)

	super.uninstallDefaults(b);
    
public voidupdate(java.awt.Graphics g, javax.swing.JComponent c)
If necessary paints the background of the component, then invokes paint.

param
g Graphics to paint to
param
c JComponent painting on
throws
NullPointerException if g or c is null
see
javax.swing.plaf.ComponentUI#update
see
javax.swing.plaf.ComponentUI#paint
since
1.5

        AbstractButton button = (AbstractButton)c;
        if ((c.getBackground() instanceof UIResource) &&
                  button.isContentAreaFilled() && c.isEnabled()) {
            ButtonModel model = button.getModel();
            if (!MetalUtils.isToolBarButton(c)) {
                if (!model.isArmed() && !model.isPressed() &&
                        MetalUtils.drawGradient(
                        c, g, "Button.gradient", 0, 0, c.getWidth(),
                        c.getHeight(), true)) {
                    paint(g, c);
                    return;
                }
            }
            else if (model.isRollover() && MetalUtils.drawGradient(
                        c, g, "Button.gradient", 0, 0, c.getWidth(),
                        c.getHeight(), true)) {
                paint(g, c);
                return;
            }
        }
        super.update(g, c);