按钮换样式java_JButton变换样式

packagecom.example.test;importjava.awt.AlphaComposite;importjava.awt.Color;importjava.awt.Font;importjava.awt.GradientPaint;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.RenderingHints;importjava.awt.Shape;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.awt.geom.RoundRectangle2D;importjavax.swing.JButton;public class RButton extendsJButton {private static final long serialVersionUID = 39082560987930759L;//public static final Color BUTTON_COLOR1 = new Color(255, 255, 255);//public static final Color BUTTON_COLOR2 = new Color(255, 255, 255);

public static final Color BUTTON_COLOR1 = new Color(205, 255, 205);public static final Color BUTTON_COLOR2 = new Color(51, 154, 47);//public static final Color BUTTON_COLOR1 = new Color(125, 161, 237);//public static final Color BUTTON_COLOR2 = new Color(91, 118, 173);

public static final Color BUTTON_FOREGROUND_COLOR =Color.WHITE;private booleanhover;publicRButton(String name) {this.setText(name);

setFont(new Font("system", Font.PLAIN, 12));

setBorderPainted(false);

setForeground(BUTTON_COLOR2);

setFocusPainted(false);

setContentAreaFilled(false);

addMouseListener(newMouseAdapter() {/*@Override

public void mouseEntered(MouseEvent e) {

// setForeground(BUTTON_FOREGROUND_COLOR);

hover = true;

repaint();

}

@Override

public void mouseExited(MouseEvent e) {

// setForeground(BUTTON_COLOR2);

hover = false;

repaint();

}*/@Overridepublic voidmousePressed(MouseEvent e){

setForeground(BUTTON_FOREGROUND_COLOR);

hover= true;

repaint();

}

@Overridepublic voidmouseReleased(MouseEvent e){

setForeground(BUTTON_COLOR2);

hover= false;

repaint();

}

});

}

@Overrideprotected voidpaintComponent(Graphics g) {

Graphics2D g2d=(Graphics2D) g.create();int h =getHeight();int w =getWidth();float tran =1F;if (!hover) {

tran= 0.3F;

}

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

GradientPaint p1;

GradientPaint p2;if(getModel().isPressed()) {

p1= new GradientPaint(0, 0, new Color(0, 0, 0), 0, h - 1,new Color(100, 100, 100));

p2= new GradientPaint(0, 1, new Color(0, 0, 0, 50), 0, h - 3,new Color(255, 255, 255, 100));

}else{

p1= new GradientPaint(0, 0, new Color(100, 100, 100), 0, h - 1,new Color(0, 0, 0));

p2= new GradientPaint(0, 1, new Color(255, 255, 255, 100), 0,

h- 3, new Color(0, 0, 0, 50));

}

g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,

tran));

RoundRectangle2D.Float r2d= new RoundRectangle2D.Float(0, 0, w - 1,

h- 1, 10, 10);

Shape clip=g2d.getClip();

g2d.clip(r2d);

GradientPaint gp= new GradientPaint(0.0F, 0.0F, BUTTON_COLOR1, 0.0F,

h, BUTTON_COLOR2,true);

g2d.setPaint(gp);

g2d.fillRect(0, 0, w, h);

g2d.setClip(clip);

g2d.setPaint(p1);

g2d.drawRoundRect(0, 0, w - 1, h - 1, 10, 10);

g2d.setPaint(p2);

g2d.drawRoundRect(1, 1, w - 3, h - 3, 9, 9);

g2d.dispose();super.paintComponent(g);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值