扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
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太小以至于容纳不下所显示的字体。对于小字体而言这并不容易引起人们的注意,但对于一些特殊显示效果的字体(如广告字之类的字体被放大,一个字可能会占用半张纸或更多的)而言,我们就不得不想办法加以改善了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者