快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
hPainter类中的方法),该方法继承自 SynthPainter,它将覆盖那些您想要定制绘画方式的特定函数。在这个例子中, 需要定义 paintPanelBackground方法,因为这种设计不能以 Synth XML 格式描 述。

为了使用定制的 painter,或者在 XML 中以任何方式创建一个类,可以使用 <object>标签。<object>标签允许创建和保持用于弥补 Synth 呈 现程序的任何 Java 类。<object>标签带有两个元素:

class :将创建的类的全名。

id :用于在 XML 文档中引用这个类实例的 ID 名。

通过使用对象,不仅可以创建 BackgroundPainter类的实例 —— 这 个类将用于绘制背景,而且还可以创建 ColorUIResource类的实例,在这个类中 可以定义背景颜色。想一想:在 BackgroundPainter类中定义背景中使用的颜色 ,这与 Synth 的目标是矛盾的,Synth 的目标是在一个外部 XML 文件中定义一 切,而不是在一个 Java 文件中进行硬编码。

使用定制 painter 的最后一步是告诉 Synth 呈现引擎,是您自己而不是 SynthPainter类来提供函数。在这个例子中,首先在 BackgroundPainter类中定 义 paintPanelBackground函数,并让 SynthPainter类定义剩下的绘画函数。 <painter> 标签让您可以覆盖 SynthPainter 函数。它带有两个元素:

method :定制 painter 应该覆盖的方法。从 使用图像一节中您已经得知, 您可以在 javax.swing.plaf.synth.SynthPainter 类中找到这些函数,但是应 该删除每个函数开始部分的 paint字符串(例如,SynthPainter中的 paintPanelBackground在 XML 文件中应该是 panelBackground)。

id:对将覆盖此方法的类的引用。

为了在定制 painter 中使用颜色,必 须将颜色保存在 javax.swing.UIDefaults类中。在清单 7 和清单 8 中可以看 到,将颜色保存在 UIDefaults中十分简单,对于那些接触过 UI 创建的人来说 应该,应该比较熟悉这些内容。在 XML 文件中定义的键将成为 UIManager中的 引用,在 BackgroundPainter的 Java 代码中,可以使用 UIManager来获得颜色 。

清单 7 展示了在例子应用程序中使用定制 painter 的 XML 代码。注意必须 首先定义颜色。

清单 7. 使用定制 painter

<style id="panel"> <object id="background" class="demo.synth.BackgroundPainter"/> <object class="javax.swing.plaf.ColorUIResource" id="startColor"> <int>30</int> <int>123</int> <int>235</int> </object> <defaultsProperty key="Panel.startBackground" type="idref" value="startColor"/> <object class="javax.swing.plaf.ColorUIResource" id="endColor"> <int>1</int> <int>20</int> <int>80</int> </object> <defaultsProperty key="Panel.endBackground" type="idref" value="endColor"/> <painter method="panelBackground" idref="background"/> </style> <bind style="panel" type="region" key="Panel"/>

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

时间:2011-09-07 ibm Michael Abernethy

清单 8 展示了例子应用程序的定制绘画类的 Java 代码:

清单 8. 定制绘画的 Java 代码

public class BackgroundPainter extends SynthPainter { public void paintPanelBackground(SynthContext context, Graphics g, int x, int y, int w, int h)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号