import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.border.Border;
public class GradientButton extends JButton implements MouseListener {
private Color Color1 = Color.LIGHT_GRAY;
private Color Color2 = Color.WHITE;
private Color BGColor = Color1;
private Border NormalBorder = BorderFactory.createLineBorder(new Color(122, 138, 153));
private Border HoverBorder1 = BorderFactory.createLineBorder(new Color(122, 138, 153));
private Border HoverBorder2 = BorderFactory.createLineBorder(new Color(184, 207, 229));
private Border InnerHoverB = BorderFactory.createCompoundBorder(HoverBorder1, HoverBorder2);
private Border HoverBorder = BorderFactory.createCompoundBorder(HoverBorder2, InnerHoverB);
private Graphics2D g2d = null;
private boolean buttonPressed = false;
public GradientButton() {
super();
setFocusPainted(false);
this.setContentAreaFilled(false);
this.setBorder(NormalBorder);
this.addMouseListener(this);
}
public GradientButton(Color mColor1, Color mColor2) {
super();
setContentAreaFilled(false);
Color1 = mColor1;
Color2 = mColor2;
setBorder(NormalBorder);
addMouseListener(this);
}
public void paintComponent(Graphics g) {
g2d = (Graphics2D) g;
if(!buttonPressed) {
GradientPaint gp = new GradientPaint(0,getHeight(),Color1,0,getHeight()/3,Color2,true);
g2d.setPaint(gp);
}
else g2d.setColor(BGColor);
g2d.fillRect(0,0,getWidth(),getHeight());
super.paintComponent(g2d);
}
public void setBorderColor(Color BColor) {
NormalBorder = BorderFactory.createLineBorder(BColor);
setBorder(NormalBorder);
}
public void setHoverBorderColor(Color Color1, Color Color2) {
this.HoverBorder1 = BorderFactory.createLineBorder(Color1);
this.HoverBorder2 = BorderFactory.createLineBorder(Color2);
this.InnerHoverB = BorderFactory.createCompoundBorder(this.HoverBorder1, this.HoverBorder2);
this.HoverBorder = BorderFactory.createCompoundBorder(this.HoverBorder2, this.InnerHoverB);
}
public void setXPBorder() {
NormalBorder = BorderFactory.createLineBorder(new Color(28, 81, 128));
this.HoverBorder1 = BorderFactory.createLineBorder(new Color(252, 214, 132));
this.HoverBorder2 = BorderFactory.createLineBorder(new Color(247, 180, 51));
this.InnerHoverB = BorderFactory.createCompoundBorder(this.HoverBorder2, this.HoverBorder1);
this.HoverBorder = BorderFactory.createCompoundBorder(NormalBorder, this.InnerHoverB);
}
public void mouseEntered(MouseEvent e) { if(super.isEnabled()) setBorder(HoverBorder); }
public void mouseExited(MouseEvent e) { setBorder(NormalBorder); }
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) { buttonPressed = true; }
public void mouseReleased(MouseEvent e) { buttonPressed = false; }
public Color getPressedColor() { return BGColor; }
public void setPressedColor(Color color) { BGColor = color; }
public Color getButtonColor_From() { return Color1; }
public void setButtonColor_From(Color color1) { Color1 = color1; }
public Color getButtonColor_To() { return Color2; }
public void setButtonColor_To(Color color2) { Color2 = color2; }
}