package viz.panel; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.geom.RoundRectangle2D; import javax.swing.JButton; public class RoundedButton extends JButton implements MouseListener { /** * */ private static final long serialVersionUID = 1L; boolean mouseIn = false; public RoundedButton(String label) { super(label); setBorderPainted(false); addMouseListener(this); } @Override protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; if (getModel().isPressed()) { g.setColor(g.getColor()); g2.fillRect(3, 3, getWidth() - 6, getHeight() - 6); } super.paintComponent(g); if (mouseIn) g2.setColor(Color.darkGray); else g2.setColor(new Color(128, 128, 128)); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setStroke(new BasicStroke(1.2f)); g2.draw(new RoundRectangle2D.Double(1, 1, (getWidth() - 3), (getHeight() - 3), 12, 8)); g2.setStroke(new BasicStroke(1.5f)); g2.drawLine(4, getHeight() - 3, getWidth() - 4, getHeight() - 3); //g2.dispose(); } @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { mouseIn = true; } @Override public void mouseExited(MouseEvent e) { mouseIn = false; } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } }