Sat, Mar 7th, 2009
Swing绘制渐变按钮
昨天从图书馆借了一本《Java动画、图形和极富客户端效果开发》,作者为Sun公司的Java SE组客户端架构师,看了几页感觉获益匪浅。内容涉及Swing的渲染原理,一些图像的滤镜实现算法(例如方框模糊和高斯模糊),以及特效(比如类似OSX的倒影风格)的原理,都十分有意义,对接下来的图形研究很有帮助,若能精读此书,相信都可以写一个简单的图像处理软件出来了。
尝试了里面提到一个十分简单的渐变按钮,效果不错,代码如下:
package cn.vifix.uilab; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Paint; import javax.swing.JButton; public class GradientButton extends JButton { public GradientButton(String text) { super(text); setContentAreaFilled(false); } protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; GradientPaint p = new GradientPaint(0,0, new Color(0xFFFFFF), 0, getHeight(), new Color(0xEEEEE)); Paint oldPaint = g2.getPaint(); g2.setPaint(p); g2.fillRect(0,0,getWidth(),getHeight()); g2.setPaint(oldPaint); super.paintComponent(g); } }
测试用代码:
package cn.vifix.uilab; import javax.swing.JFrame; public class GradientButtonTest extends JFrame { public static void main(String[] args) { GradientButtonTest test = new GradientButtonTest(); test.setTitle("Gradient Button Test"); GradientButton button = new GradientButton("test"); test.add(button); test.setSize(300, 60); test.setVisible(true); } }
在下一直看不惯 Java 调用父类是用 super 而不是 parent -_-b
貌似无关紧要的问题 -_-b
我在我们学校的图书馆里面只见过VB的书 OTL
嘛嘛,毕竟只是高中么~不要要求太高 -v-
但是就是在那个图书馆里面我把什么《神曲》、《时间简史》给看完了,最近还进了“百鬼夜行”系列的刚出的几本书……
嘛~~神曲这种名著有并不奇怪吧~时间简史不管怎么说算是现代物理学科普的经典作品,也不奇怪吧~
百鬼夜行~~莫非是西瓜??我对高中图书馆的回忆是在里面看完了0079的小说版,然后对那翻译我泪流满面(阿姆罗->阿宝 orz 功夫熊猫么 orz
百鬼也行就是魍魉之匣那套书
OTL 手滑打错字了
我能看懂,也行~~ (拖……