快速业务通道

高级Synth:有了最新的Swing外观,定制UI不在话下 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
到 java.awt.Font 类中的三个参数:

name :字体的名称(例如,Verdana、Arial)。

size :字体大小,以像素为单位。

style :如果不使用这个可选标签,那么将得到常规外观的字体。其他选项 包 括 BOLD 和 ITALIC。您还可以通过在这两个属性之间加一个空格来指定粗体加 斜 体的字体:BOLD ITALIC(这种组合属性的技术对于 Synth XML 文件中的所有属 性都适用)。

最后,通过使用 .* wildcard,将这个式样绑定到应用程序中的每个组件, 而 不是将其绑定到每个 JLabel 和每个JButton。这个通配符告诉 Synth 外观为每 个组件指定一个默认的 white Aharoni 字体。清单 3 展示了用于设置组件字体 和颜色的完整 XML 代码:

清单 3. 更改多个组件的字体和颜色

<style id="default">   <font name="Aharoni" size="14"/>   <state>    <color value="#FFFFFF" type="FOREGROUND"/>   </state> </style> <bind style="default" type="region" key=".*"/>

高级Synth:有了最新的Swing外观,定制UI不在话下(4)

时间:2011-09-07 ibm Michael Abernethy

使用图像

图 2 中的 textfield 边框不是常规外观的单像素矩形边框。可以使用一个 图 像来创建这些边框。这不是我们所熟悉的概念 —— 图像用在 button 和 label 中已经有些时候了 —— 但您可以想像在哪些地方会出问题。如何知道光标移动 到什么地方,如何显示文本,如何创建不同大小的文本域?这些问题可以通过图 像拉伸(image stretching)的概念来解决。一个图像文件必须描述应用程序中 文本域各个边的长度,因此需要有一种方式来告诉 XML 文件如何适当地拉伸图 像 ,以及如何处理常规的 textfield 活动(carat 和文本控制)。

幸运的是,从早期带皮肤的应用程序起,就有一个方法可用于处理这种类型 的 拉伸。图像必须分成 9 个区域 —— 顶部、右上、右部、右下、底部、左下、 左 部、左上和中间 —— 这些区域是通过 XML 文件中的一个属性来指定的。然后 呈 现程序可以通过一定的方式拉伸图像,以适合指定的空间。图 3 展示了文本域 图 像是如何拉伸的。

图 3. 在 Synth 中图像如何拉伸

Synth 外观

图 3 中绿色填充区只会垂直拉伸。也就是说,当文本域比图像高的时候,这 些区域就会变高。当文本域比图像长的时候,那些红色填充区只会水平拉伸。而 黄色填充区则是大小固定的。不管文本域的大小如何,这些区域都会如它们在图 像文件中那样显示。因为这些区域不会拉伸,因此它们应该包含所有画布、特殊 底色、阴影和任何一旦拉伸就会看起来很古怪的东西。最后,中间区域是可选的 。您可以选择画出或者忽略该区域。在我们的例子中,文本域的中间被忽略。此 后,呈现程序使用这个区域来处理文本控制和 carat。也就是说,使用一个图像 文件完全画出文本域。

imagePainter标签提供了在外观中使用图像所需的所有信息。它只需要几个 属性:

path :所使用的图像的路径。

sourceInsets :按像素计算的 insets,表示图 3 中绿色区域的宽度和粉红 色区域的高度。它们依次映射到顶部、左部、底部和右部。

method :这也许是最令人费解的属性。它直接映射到 javax.swing.plaf.synth.SynthPainter类中的一个函数。这个类包含大约 100 个函数,所有这些函数都以 paint开始。每个函数映射到在一个 Swing 组件中 某个特定的绘画任务。您只需找到一个合适的函数,然后去掉 paint字符串,并 使随后的首个字母为小写形式,便可以设置该属性。例如, paintTextFieldBorder是 textFieldBorder的属性。呈现程序(renderer

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号