选择显示字体大小

jfc/swing活学活用之jlabel文字魔法

前言

  本文将讲述如何借助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;
 }
}

  richjlabel扩展了标准的javax.swing.jlabel,并在构造函数中加入了tracking参数。接下来,它增加了两个方法用来绘制左阴影和右阴影。这里之所以称之为阴影是因为它们绘制在主体文本的下面,但它们看起来到底像不像阴影这取决于它的颜色,以及x-和y-的偏移量。

  jlabel自动通知布局管理器它的最佳尺寸依赖于字体的大小。当你加入定制的tracking时,尺寸将会变得不准确,导致jlabel太小以至于容纳不下所显示的字体。对于小字体而言这并不容易引起人们的注意,但对于一些特殊显示效果的字体(如广告字之类的字体被放大,一个字可能会占用半张纸或更多的)而言,我们就不得不想办法加以改善了。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons