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

[1] [2] [3] 下一页  

时间: 2024-11-05 12:25:53

JFC/Swing活学活用之JLabel文字魔法的相关文章

活学活用这五招 给力增强用户黏性

中介交易 SEO诊断 淘宝客 云主机 技术大厅 做久了网站,站长一定深知用户黏性对于网站的重要性.如果仅仅是依靠搜索引擎为网站带来流量,而这些流量却只是"匆匆过客",那么对于网站而言意义显然不大,除非你只是利用弹窗广告的形式把这些流量变现,但总体看来这种广告模式所带来的收益既不稳定,也难以长远.所以,要想使网站获得更好的发展,就必须有更加稳定的流量来源保障,在这方面,增强用户的黏性,使用户逐渐转变为回头率高的忠实用户乃"上上策"! 在如何增强用户黏性方面,有许多常用

JFC/Swing活学活用系列之定制JList显示

显示 点击这里下载源文件 引言 在图形用户界面方面(GUI),Java一直无法与C++.PB.Delphi之类抗衡,使用早期Java/AWT包所开发的界面实在是让人不敢恭维.随着JFC/Swing的日趋成熟,开发出与可以与C++媲美的GUI不再是"不可能完成的任务".除了具有丰富的界面组件之外,以下优秀的特性更让Swing如虎添翼.Swing是以100%纯Java实现的,且辅以JDK 1.1 轻量级UI框架为基础,没有本地代码,独立于操作系统之外,基于MVC设计模式.采用可插入的外观感

JFC/Swing活学活用之创建自定义图像组件

创建 引言 本文将讲述如何应用JFC/Swing内建的图像组件来创建完全自定义的基于图像的用户接口. 大多数Swing应用程序是通过标准VM提供的,或者是客户提供的外观和感觉(L&F)来获取它们的外在展示.L&F是一个完整的体系架构,VM需要做很多内在的工作,并且它还不是完全自定义的.举个例子来说吧,在基于L&F的前提下,我们可以创建一个按钮,看起来有点像交通岗上的"红灯",随之而来的在你的应用中所有的按钮就都有了这样的"相貌".然而有时我们

商城运营需活学活用4P营销理论

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站运营说到底就是投入较少的精力来获得巨大的营销效果,著名营销学者麦肯锡从销售方的角度提出著名的4P营销理论是可以被目前众多商城网站在运营方面进行灵活的借鉴的,那么什么是4P营销理论呢?Product,Price,Place,Promotion中文的意思是产品,价格,渠道和促销,取这四个字母的首字母,于是就简称麦肯锡的4P营销理论. 那么作为

活学活用Office剪贴板

"Office 剪贴板"可与标准的"复制"和"粘贴"命令配合使用.只需将一个项目复制到"Office 剪贴板"中,即可将其添加到收集的内容中, 然后在任何时候均可将其从"Office 剪贴板"中粘贴到任何http://www.aliyun.com/zixun/aggregation/33949.html">Office文档中.在退出Office之前,收集的项目都将保留在"Offic

新手站长需活学活用三种基础盈利模式

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 谁都想让自己网站能够尽快取得盈利,可是这个世界上的事情,往往是无心插柳柳成荫,你越是想,往往又越得不到,除非你具有强大的执行力,再加上敏捷的创新能力,否则网站盈利也只能够对你是镜花水月!因为笔者从如今的互联网现状就了解到,能够获得不错利润的网站,可以说是寥寥无几,一般而言,能够取得自给自足的水平,就算是相当不错了,更多的是挣扎在贫困线的边缘!

为可访问性编码: 用JFC/Swing将可访问性构建到您的Java应用

所有 Java 应用程序对于残疾人士都应该是可访问的.用 GUI 应用程序实现这一点时 需要格外注意.本文向您展示了如何使用基于 JFC/Swing 的可访问性工具箱事半功倍地 实现最高级别的可访问性. 大多数基于 GUI 的软件设计都基于这一假设:即用户可以清楚地看到屏幕并且可以有 效地使用鼠标选择图形用户界面(GUI)上的选项.对于许多残疾人士,尤其是那些视力 和运动控制受损的人,这个假设是有问题的.1998 年,美国康复法案(Rehabilitation Act)经过修改(请参阅侧栏的 5

java-Java怎么实现界面?类似普通程序的界面?swing 到底学不学?

问题描述 Java怎么实现界面?类似普通程序的界面?swing 到底学不学? Java怎么实现界面的.?swing不是可以么?为什么有人说不让我学?那我应该学什么? 解决方案 AWT和Swing吧,但是Swing又是对AWT的扩展,可以实现更多的视图功能.个人觉得有必要学-- 解决方案二: 你自己都说了swing了,还问怎么实现?java里实现图形用户界面,也就是你说的普通程序界面 用的就是swing,swing技术本身并不差,也不是说c#做的好了,swing就没用了,对于开发桌面应用程序来说,

FLASH入门及学AS编程的正确途径

编程 FLASH入门途径下面我的说每一个问,请你都不要跳过,不管您用什么手段,必须一个个的吃透,否则欲速则不达.1,三种图层图层:和PHOTOSHOP的图层差不我导向层:不仅可以导向MOTION动画,还有参考层的作用(这个功能用的人就不多了)蒙板层:蒙板层有图象的地方,它下面那层的内容才可显示,有点象3DMAX里的蒙板帖图2,三种帧:即帧,关键帧,空白关键帧3,三种符号:即影片剪缉,按钮,图形,初学可以不用图形,用影片剪缉4,三种FLASH动画的文件格式:即EXE,SWF,HQX5,三种FLAS