CoolButton

[size=x-large]CoolButton(1)[/size]
这段时间一直在美化界面,总觉得按钮丑了一点,输入框也难看了一点,
终于他们都被我改造了!再也不用担心我们的界面不好看了!!!
小伙伴们看进来呀!
改造这个按钮经过一个十分艰辛的过程,但终于还是被我发现了!在探索的过程
中我先学会了一种比较简单按钮(一会会在下面讲解),但是我发现他还是有一些问
题,在背景色为接近白色的界面上还能看出效果,但是其他颜色不是很明显而且还会
出现边缘的白色,这就是为什么在接近白色界面上效果会好一点的原因。在这难过的
时刻,我终于找到了解决办法,也就是稍复杂一点的异形按钮,下面一一介绍。
一 简单漂亮的按钮
要做一个漂亮的按钮,无论怎样本质还是一个按钮(我们要继承JButton),
接下来呢我觉得就是对他进行包装。
操作之前要首先了解Graphics2D这个类,此 Graphics2D 类扩展
Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控
制。它是用于在 Java(tm)平台上呈现二维形状、文本和图像的基础类。要改变我们
原有的按钮形状就要用到他。
由于我们的按钮是各种形状,因此我们需要
public void paintComponent(Graphics g)

方法,实现绘制此容器中的每个组件;上面我们提过Graphics2D类扩展 Graphics
类,因此我们可以通过类的多态性向下转型
 Graphics2D g2=(Graphics2D) g;

以取得画布。
我们要实现的按钮的大体过程如图
[img]http://dl2.iteye.com/upload/attachment/0089/7784/c1a62f6a-1279-37db-80cc-8403fd9a7699.jpg[/img]

[img]http://dl2.iteye.com/upload/attachment/0089/7786/ab91cf96-6610-39c2-a1ab-b1ca67c1c094.jpg[/img]

[img]http://dl2.iteye.com/upload/attachment/0089/7788/d8b15b79-2416-3105-8a5c-cb4bb98edfe0.jpg[/img]
1.首先,你看到的是最普通的按钮
2.紧接着你看到一个外形为圆长方形的按钮,这个怎么实现呢?看看吧!其实实现这个
仅需要这样几句就好!so easy!
//RoundRectangle2D 类定义一个矩形,该矩形具有由位置 (x,y)、
//维度 (w x h) 以及圆角弧的宽度和高度定义的圆角
//此类是所有保存 2D 圆角矩形的对象的抽象超类。实际的坐标存储表示形式由子类决定
RoundRectangle2D rect=new RoundRectangle2D.Float(0,0,w,h-1,20,20);
g2.clip(rect);//利用它即可切除圆角
g2.fillRect(0, 0, (int)w, (int)h); //将圆长方形画出来

3.一定很想知道图中按钮的的渐变色是怎么实现的吧?在这里呢再给大家介绍一个方法
GradientPaint 类提供了使用线性颜色渐变模式填充 Shape 的方法
GradientPaint redtowhite=	
new GradientPaint(0,0,Color.red,w,0,Color.white);
/**解释一下,(0,0)和(w,0)是两个点的坐标,可见除了两个点外,还有
*两种颜色,以上的组合可实现由点(0,0)到(w,0)由Color.red到Color.white
*/的颜色渐变。然后用redtowhite填充圆长方形即可
g2.setPaint(redtowhite);
//完成了吗?一定有问题,颜色完全看不到!不是方法不对!你想到是什么原因了吗?
//好吧,我来揭秘,颜色是有的!!!但是被按钮挡住了!现在让我们把按钮设为透明!试试看
g2.setComposite(
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.1f));

额。。。这个方法比较复杂!一两句解释不清楚有兴趣的研究一下吧!
4.看起来出不多了是吧?其实还是觉得少了点什么!例如图2剪切完的按钮,圆角处没有边
填充了颜色后也许看不出来,但毕竟还是觉得不够完美,还是修饰一下比较好!那我们就描一下边吧!
又遇到问题了,怎么描?看我的!
//绘制外边框
g2.setPaint(redtowhite);//设置画笔颜色
g2.drawRoundRect(0, 0, (int)w, (int)h-1, 20, 20);

很明显这就是在画一个圆长方形,举一反三我们还可以绘制内边框,只要你喜欢!
5.最后如果使用了一下的代码即可实现绘制图标
//绘制图标(没有这一句,将看不到按钮上“登录”两字)
super.paintComponent(g);

不如,下次再介绍复杂一点的按钮吧!赶快来消化coolbutton!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值