/* MyButtonUI.java */ //package my; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.metal.*; public class MyButtonUI extends MetalButtonUI { private final static Border defaultBorder = MyButtonBorder.getButtonBorder(); private Border savedBorder; protected static MyButtonUI buttonUI; public static ComponentUI createUI( JComponent c ) { if( buttonUI == null ) { buttonUI = new MyButtonUI(); } return buttonUI; } public void installUI( JComponent c ) { super.installUI( c ); savedBorder = c.getBorder(); c.setBorder( defaultBorder ); } public void uninstallUI( JComponent c ) { if( c.getBorder() == defaultBorder ) c.setBorder(savedBorder); super.uninstallUI( c ); } protected void paintButtonPressed( Graphics g, AbstractButton b ) { if( b.isOpaque() ) { Dimension size = b.getSize(); Insets insets = b.getBorder().getBorderInsets(b); g.setColor( getSelectColor() ); g.fillRect( insets.left, insets.top, size.width-insets.left-insets.right, size.height-insets.top-insets.bottom ); } } }