java swing synth_Java Swing 皮肤定制 之 Synth DTD 用法

synth DTD下载:synth.dtd

1.   Synth概述

Synth是Sun提供的一种新的Look And Feel,与以往的Look And Feel不同,这是个通过配置文件进行定义的,插入式的Look And Feel。在不修改代码的情况下,用户可以仅通过修改配置文件,即可对控件的字体,颜色等属性进行修改。

2.   Synth配置文件

a)        说明:Synth配置文件是一个XML文件,她是整个Synth配置的关键,而要掌握Synth,最主要的就是要熟悉该文件的DTD,因为他规定了什么可以配置,而什么是不可配置的。

3.   Synth元素

a)        说明:synth元素是整个Synth配置文件的根元素,可以在该元素下通过font,color,imagePainter等标签,直接定义全局可用的风格,然后在某个style或者state内部,通过他们的子font,color标记上的idref属性,即可引用这些全局定义好的属性。。

b)        DTD:

4.   Style元素

a)        说明:style标签的用途就是把font,color等标签归到一起,作为一个完整的风格,她需要通过后续的bind标签,来绑定到具体的控件上。另外clone属性提供了一种继承机制,通过该属性你可以从某个已定义的style当中把内容继承过来,然后修改某个需要改变的部分即可。

b)        DTD:

c)        例子:

5.   State元素

a)        说明:State标签用于指定控件在某个特定状态时的风格。state标签中的value值在SynthConstants类中定义。

b)        DTD:

c)        例子:

6.   Font元素

a)        说明:定义某种字体风格。

b)        例子:

7.   Color元素:

a)        说明:定义某种颜色。

b)        例子:

8.   Property元素:

a)        说明:通过键值对的方式定义某些控件特定的属性,属性值将存入类SynthStyle类中,这样做的一个好处就是不用为每个特定属性都定义一个标签,而且以后要扩展也比较方便。可以设置的控件属性,参考最后的表格。

b)        DTD:

c)        例子:

9.   DefaultsProperty元素

a)        说明:将特定于控件的属性值存入类UIDefaults当中,然后由SynthLookAndFeel传入UIManager当中。通过UIManager.get()方法可以获取到该值。

b)        DTD:

c)        例子:

255

0

0

10.GraphicsUtils元素

a)        说明:用于定义当前Style所使用的SynthGraphicsUtils实例。

b)        DTD:

c)        例子:

11.Insets元素:

a)        说明:定义某种间距。

b)        例子:

12.Bind元素

a)        说明:将属性与一类或者某一特定的控件进行绑定。当type的值为region时,她处理的是一系列的控件。当需要处理某个特定的组件时,需要把type设定为name,然后在组件上调用setName()方法设定名字,这样在程序执行时Synth,将会根据组件的getName()的返回值进行匹配。Key部分是使用正则表达式的方式进行匹配。当一个控件有多个style可匹配,那么这些style将被合并,如果style之间有同名部分,则后定义的style将覆盖之前定义的style。

b)        DTD:

c)        例子:

13.Painter元素

a)        说明:为当前的Style或者State定义一个用于绘画文本的SynthPainter实例。

b)        DTD:

c)        例子:

14.ImagePainter元素

a)        说明:为当前的Style或者State定义一个用于绘画图形的SynthPainter实例。可以用该属性来绘制控件的背景。

b)        DTD:

c)        例子:

paintCenter="true"/>

15.ImageIcon元素

a)        说明:为支持Icon属性的控件绑定一个图标。

b)        例子:

16.Opaque元素

a)        说明:用于设置一个控件的Opaque属性。

b)        例子:

17.BeansPersistence属性

a)        说明:该属性可以为其他标签(imagePainter等)引入一些自定义的类。

18.完整的例子:

a)        配置文件:

b)        Java代码:

public class Emulator extendsJPanel {public static void main(String[] args) throwsException {

Runnable runner= newRunnable() {public voidrun() {try{

SynthLookAndFeel synth= newSynthLookAndFeel();

Class aClass= Emulator.class;

InputStream is= aClass.getResourceAsStream("demo.xml");

synth.load(is, aClass);

UIManager.addAuxiliaryLookAndFeel(synth);

JFrame frame= new JFrame("SIP Client");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(newBorderLayout());

Emulator emulator= newEmulator();

emulator.setName("Emulator");

frame.add(emulator, BorderLayout.CENTER);

frame.setSize(360, 674);

frame.setResizable(false);

frame.setVisible(true);

}catch(Exception e) {

e.printStackTrace();

}

}

};

EventQueue.invokeLater(runner);

}publicEmulator() {}

}

c)        说明:文件的路径,及下文当中路径相关的操作,都是相对于load()方法中的class参数的位置。当使用SynthLookAndFeel时,需要为每个控件都指定风格,这显然是很累的,一个解决办法就是,不调用UIManager.setLookAndFeel(laf),而是使用UIManager.addAuxiliaryLookAndFeel(laf),即将Synth作为扩展的LookAndFell,这就能继续使用默认的LookAndFeel和定制的SynthLookAndFeel。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值