BasicButtonUI.java [plain text]
package javax.swing.plaf.basic;
import javax.swing.*;
import javax.swing.plaf.*;
import java.awt.*;
public class BasicButtonUI extends ButtonUI
{
int gap = 3;
Color textColor, disabledTextColor;
Color pressedBackgroundColor;
Color normalBackgroundColor;
public static ComponentUI createUI(final JComponent c)
{
return new BasicButtonUI();
}
public void installUI(final JComponent c)
{
super.installUI(c);
textColor = new Color(0,0,0);
disabledTextColor = new Color(130, 130, 130);
pressedBackgroundColor = new Color(150,150,150);
pressedBackgroundColor = new Color(150,150,150);
normalBackgroundColor = new Color(192,192,192);
}
public Dimension getPreferredSize(JComponent c)
{
AbstractButton b = (AbstractButton)c;
Dimension d = BasicGraphicsUtils.getPreferredSize(b,
gap,
b.getText(),
b.getIcon(),
b.getVerticalAlignment(),
b.getHorizontalAlignment(),
b.getHorizontalTextPosition(),
b.getVerticalTextPosition());
return d;
}
public void paint(Graphics g, JComponent c)
{
AbstractButton b = (AbstractButton) c;
Rectangle tr = new Rectangle();
Rectangle ir = new Rectangle();
Rectangle vr = new Rectangle();
Font f = c.getFont();
g.setFont(f);
FontMetrics fm = SwingUtilities.getFontMetrics(f);
Insets i = c.getInsets();
vr.x = i.left;
vr.y = i.top;
vr.width = b.getWidth() - (i.right + vr.x);
vr.height = b.getHeight() - (i.bottom + vr.y);
String text = SwingUtilities.layoutCompoundLabel(c,
fm,
b.getText(),
b.getIcon(),
b.getVerticalAlignment(),
b.getHorizontalAlignment(),
b.getVerticalTextPosition(),
b.getHorizontalTextPosition(),
vr,
ir,
tr,
gap);
if (b.getModel().isPressed() ||
b.getModel().isSelected())
{
paintButtonPressed(g, c);
}
else
{
paintButtonNormal(g, c);
}
paintIcon(g, c, ir);
paintText(g, c, tr, b.getText());
paintFocus(g, c, vr, tr, ir);
}
protected void paintFocus(Graphics g,
JComponent c,
Rectangle vr,
Rectangle tr,
Rectangle ir)
{
}
protected void paintIcon(Graphics g,
JComponent c,
Rectangle iconRect)
{
AbstractButton b = (AbstractButton) c;
if (b.getIcon() != null)
{
int x = iconRect.x;
int y = iconRect.y;
System.out.println("WE HAVE AN ICON: " + b.getIcon());
b.getIcon().paintIcon(c, g, x, y);
}
else
{
}
}
protected void paintButtonPressed(Graphics g,
JComponent b)
{
Dimension size = b.getSize();
g.setColor(pressedBackgroundColor);
g.fillRect(1,1,size.width-2, size.height-2);
}
protected void paintButtonNormal(Graphics g,
JComponent b)
{
Dimension size = b.getSize();
g.setColor(normalBackgroundColor);
g.fillRect(1,1,size.width-2, size.height-2);
}
protected void paintText(Graphics g,
JComponent c,
Rectangle textRect,
String text)
{
Font f = c.getFont();
g.setFont(f);
FontMetrics fm = SwingUtilities.getFontMetrics(f);
g.setColor(c.isEnabled() ? textColor : disabledTextColor);
BasicGraphicsUtils.drawString(g,
text,
0,
textRect.x,
textRect.y + fm.getAscent()/2);
}
}