package javax.swing.plaf.basic; import javax.swing.*; import javax.swing.plaf.*; import java.awt.*; public class BasicButtonUI extends ButtonUI { int gap = 3; // int y_text_space = 2, x_text_space + 5; 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.text, b.getIcon(), b.vert_align, b.hori_align, b.hori_text_pos, b.vert_text_pos); // System.out.println("^^^^^^^^^^^^^^^^^^^^^^ BASIC-PREF="+d + ",T="+b.text); return d; } 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 = FontMetrics.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); //System.out.println(" VIEW-RECT-BUTTON="+vr+", insets="+i+", FONTM="+fm); 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()) { //System.out.println("paint pressed"); paintButtonPressed(g, c); } else { //System.out.println("paint normal"); paintButtonNormal(g, c); } paintIcon(g, c, ir); paintText(g, c, tr, b.text); 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.default_icon != null) { int x = iconRect.x; int y = iconRect.y; System.out.println("WE HAVE AN ICON: " + b.default_icon); b.default_icon.paintIcon(c, g, x, y); } else { //System.out.println("NO ICON FOR BUTTON:" + b.text); } } 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 = FontMetrics.getFontMetrics(f); g.setColor(c.isEnabled() ? textColor : disabledTextColor); BasicGraphicsUtils.drawString(g, text, 0, textRect.x, textRect.y + fm.getAscent()/2); } }