package org.isatools.isacreator.common.button; import org.isatools.isacreator.common.UIHelper; import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; /** * Created with IntelliJ IDEA. * User: eamonnmaguire * Date: 07/09/2013 * Time: 14:00 * To change this template use File | Settings | File Templates. */ public class FlatButton extends JButton implements MouseListener { private ButtonType type; private Color fontColor; private Font font; public FlatButton(ButtonType type, String text) { this(type, text, Color.white); } public FlatButton(ButtonType type, String text, Color fontColor) { this(type, text, fontColor, UIHelper.VER_12_BOLD); } public FlatButton(ButtonType type, String text, Color fontColor, Font font) { super(text); this.type = type; this.fontColor = fontColor; if(type == ButtonType.GREY && fontColor == Color.white) { this.fontColor = UIHelper.DARK_GREEN_COLOR; } this.font = font; setForeground(Color.WHITE); addMouseListener(this); } @Override public int getHeight() { return super.getHeight()-4; //To change body of overridden methods use File | Settings | File Templates. } public void paintComponent(Graphics graphics) { Graphics2D g = (Graphics2D) graphics.create(); if (!isEnabled()) { g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .25f)); } if (getModel().isPressed() || getModel().isRollover()) { g.setColor(type.getHoverColor()); } else { g.setColor(type.getDefaultColor()); } g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(fontColor); g.setFont(font); FontMetrics fontMetrics = g.getFontMetrics(font); int width = fontMetrics.stringWidth(getText()); int adjustment = (getWidth() - width) / 2; g.drawString(getText(), adjustment, getHeight() - 9); } @Override protected void paintBorder(Graphics graphics) { // do nothing. No border thank you. } public static void main(String[] args) { JFrame testFrame = new JFrame("Test FlatButton"); testFrame.setSize(new Dimension(400, 400)); testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); testFrame.setLayout(new BorderLayout()); JPanel container = new JPanel(); container.add(new FlatButton(ButtonType.RED, "Hi Lauren!")); container.add(new FlatButton(ButtonType.BLUE, "Hi Annapaola!")); container.add(new FlatButton(ButtonType.ORANGE, "Hi Paul!")); container.add(new FlatButton(ButtonType.GREY, "Hi Eamonn!")); container.add(new FlatButton(ButtonType.GREEN, "+")); testFrame.add(container); testFrame.setLocationRelativeTo(null); testFrame.pack(); testFrame.setVisible(true); } public void mouseClicked(MouseEvent mouseEvent) { // } public void mousePressed(MouseEvent mouseEvent) { // To change body of implemented methods use File | Settings | File Templates. } public void mouseReleased(MouseEvent mouseEvent) { //To change body of implemented methods use File | Settings | File Templates. } public void mouseEntered(MouseEvent mouseEvent) { setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } public void mouseExited(MouseEvent mouseEvent) { setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } }