JPanel是最常用的容器了,先来看看如何定制JPanel的外观。修改XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<synth>
<style id="panel">
<opaque value="TRUE"/>
<state>
<color value="#AAEECC" type="BACKGROUND"/>
</state>
</style>
<bind style="panel" type="region" key="panel"/>
</synth>
现在看看运行效果:
舒服多了~
现在来看一下XML的内容。
<synth>
<style id="panel">
<opaque value="TRUE"/>
<state>
<color value="#AAEECC" type="BACKGROUND"/>
</state>
</style>
<bind style="panel" type="region" key="panel"/>
</synth>
按照Synth的xml文件格式定义(http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/plaf/synth/doc-files/synthFileFormat.html),
style 节点定义一种风格。
bind 节点定义了对于什么对象应用这种风格,其中style属性指明了与style的关联关系,取值必须是一个style节点的id。type指明了应用的方式,region表示是对Swing对象应用风格,key指明了Swing对象的类型,这里是panel,注意不是JPanel。没有前面的J,大小写不敏感。type属性有两种取值,还有一种是 “name”,表示非Swing组件。
style节点内描述了很多内容,先从最简单的开始。
opaque 节点说明是否是不透明的, <opaque value="TRUE"/>表示不透明,<opaque value="FALSE"/>表示透明。注意这个也很重要,有时候设置了半天没有效果其实就是因为组件是透明的。 JPanel的opaque属性默认是透明的,要显示背景,这里必须设置为不透明。
state 节点表示了在特定状态下的各个外观属性值。
由 value属性指明定义的状态,value取值范围(ENABLED, MOUSE_OVER, PRESSED, DISABLED, FOCUSED, SELECTED or DEFAULT. )。组合状态可以用多个取值之间试用“and”连接表示,比如“SELECTED and PRESSED”表示选择并按下时的状态。
如果没有定义value属性,则表示这个state节点定义的是所有状态下的外观。比如上面的xml中就是定义的Panel组件所有状态下的背景颜色取值。
<color value="#AAEECC" type="BACKGROUND"/> 定义了组件的颜色取值,value表示了具体颜色值。
value有三种表示方法,
1)十六进制rgb表示法,格式为#RRGGBB。
2)十六进制带透明度表示法,格式为#RRGGBBAA,
3)是使用颜色名称,比如RED,BLUE这些。type定义了使用颜色的对象,取值有FOREGROUND, BACKGROUND, TEXT_FOREGROUND。