分类:
2008-09-11 14:31:28
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太小以至于容纳不下所显示的字体。对于小字体而言这并不容易引起人们的注意,但对于一些特殊显示效果的字体(如广告字之类的字体被放大,一个字可能会占用半张纸或更多的)而言,我们就不得不想办法加以改善了。
[1]