package com.quiltplayer.view.swing.buttons; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import net.miginfocom.swing.MigLayout; import com.quiltplayer.view.swing.ColorConstantsDark; import com.quiltplayer.view.swing.FontFactory; /** * Default button implementation. * * @author Vlado Palczynski. */ public class QButton extends JButton { private static final long serialVersionUID = 1L; public static final String MIG_HEIGHT = "h 0.70cm!"; protected static Color DEFAULT = ColorConstantsDark.BACKGROUND.brighter(); protected static final Color HOOVER = new Color(80, 80, 80); protected static final Color PRESSED = new Color(184, 207, 229); protected Color color = DEFAULT; public QButton(final String label) { super(label); setDefaults(); } protected void setDefaults() { setLayout(new MigLayout("fill")); setFocusable(false); setOpaque(false); setForeground(new Color(200, 200, 200)); setContentAreaFilled(false); setFont(FontFactory.getFont(14)); addMouseListener(); } protected void addMouseListener() { addMouseListener(new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { color = DEFAULT; repaint(); } @Override public void mouseEntered(MouseEvent e) { color = HOOVER; repaint(); } /* * (non-Javadoc) * * @see java.awt.event.MouseAdapter#mouseReleased(java.awt.event.MouseEvent) */ @Override public void mousePressed(MouseEvent e) { color = PRESSED; repaint(); } /* * (non-Javadoc) * * @see java.awt.event.MouseAdapter#mouseReleased(java.awt.event.MouseEvent) */ @Override public void mouseReleased(MouseEvent e) { color = HOOVER; repaint(); } }); } // Paint the round background and label. protected void paintComponent(Graphics g) { int w = getWidth(); int h = getHeight(); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // RenderingHints renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, // RenderingHints.VALUE_ANTIALIAS_ON); // renderHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); // renderHints.put(RenderingHints.KEY_TEXT_ANTIALIASING, // RenderingHints.VALUE_TEXT_ANTIALIAS_ON); // // g2d.setRenderingHints(renderHints); // g2d.setColor(color); // g2d.fillRoundRect(0, 0, w, h, 11, 11); super.paintComponent(g); } /* * (non-Javadoc) * * @see javax.swing.AbstractButton#paintBorder(java.awt.Graphics) */ @Override protected void paintBorder(Graphics g) { // Graphics2D g2d = (Graphics2D) g; // g2d.setColor(DEFAULT); // g2d.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, 11 - 1, 11 - 1); } }