前言
本文将讲述如何借助java 2d的"魔力"来帮助jfc/swing的jlabel组件创建更加丰富多彩的应用。
jlabel作为jfc/swing架构的基础组件之一,应用非常广泛。当你想要绘制不可编辑的文本时,jlabel是jfc/swing提供给我们的唯一选择。一般来说,改变字体、字号、字体颜色,甚至可以加入图标。通过在组件中应用html语言,甚至可以加入下划线等特效。对于大多数应用来说,这已经足够好了。但有时你可能有更进一步的要求,比如你需要下拉阴影效果或浮雕效果的时候?这时标准的jlabel就无能为力了,我们不得不结合强大的java 2d应用,扩展jlabel的功能,以完成下拉阴影,轮廓线,甚至是3d效果之类的特效。幸运的是,jlabel的良好扩展性,使这一切皆为可能,并很容易。
大多数文字特效都可以通过两种简单的方式来完成。第一种,可以通过多次重复绘制文本,每次一点点偏移或每次不同颜色,来创建类似下拉阴影和浮雕之类的特效。第二种,可以通过调整单词中字符的间隔(在文字处理系统中它被称作字符间隙(tracking))来实现。字符间隙通常被加到字体的缺省间隙之上。因而,字符间隙加1意味着一个单词中每一个字符之间的间隙都在缺省的基础上加1。如果将该值赋为0则字符间保持缺省的间隙。
为了实现上面所描述的功能,我们必须重载jlabel中尺寸相关和绘制相关的代码,在这里我们新建了一个扩展jlabel的类richjlabel,参考下面的示例代码:(详细的代码请参考附录)
示例代码1:
| public class richjlabel extends jlabel { /** * 字符间隙 */ private int tracking; /** * 构造函数 * * @param text 文本 * @param tracking 字符间隙 */ public richjlabel(string text, int tracking) { super(text); this.tracking = tracking; } // 文本的定位信息 private int left_x, left_y, right_x, right_y; // 文本的颜色信息 private color left_color, right_color; /** * 设置左阴影 * * @param x 定位信息 * @param y 定位信息 * @param color 颜色 */ public void setleftshadow(int x, int y, color color) { left_x = x; left_y = y; left_color = color; } /** * 设置右阴影 * * @param x 定位信息 * @param y 定位信息 * @param color 颜色 */ public void setrightshadow(int x, int y, color color) { right_x = x; right_y = y; right_color = color; } } |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器