上一篇里面提到ComboBox,不过Combox是个复合组件定制还比较麻烦。所以先看下List的定制。其实ComboBox组件中包含了一个List组件。
照旧看下默认效果:
然后是应用了配置的效果:
为了凸显JList的边框,JPanel的颜色改了一下,颜色搭配噁心了,不要在意哈。颜色搭配的学问比较高深。最后把颜色会再修改一下。
这里主要看方法,XML中JList的配置如下:
<style id="basiclist">
<opaque value="TRUE" />
<property key="List.rendererUseListColors" type="Boolean" value="true"/>
<!-- 指定列表项的高度,默认为-1,但在设置时不能设置为-1,接受0. -->
<property key="List.cellHeight" type="Integer" value="30"/>
<!-- List好像只接受SELECTED状态,所以这里也可以不设置value属性值。 -->
<state>
<!-- 指定透明度这里有个变动,1.5版本时格式是#RRGGBBAA 1.7时变成#AARRGGBB -->
<color value="#0000FF" type="FOREGROUND"/>
<color value="#3EB4C0" type="BACKGROUND" />
</state>
<state value="SELECTED">
<color value="#FF0000" type="TEXT_FOREGROUND"/>
<color value="#64FFFF00" type="TEXT_BACKGROUND" />
</state>
<imagePainter method="listBorder" path="resources/images/textfield.png"
sourceInsets="4 6 4 6" paintCenter="false"/>
<insets top="4" left="6" bottom="4" right="6"/>
</style>
<bind style="basiclist" type="region" key="list"/>
JList设置需要注意的是<property key="List.rendererUseListColors" type="Boolean" value="true"/> 这一句要有,不然颜色设置是不生效的。
还是比较容易看懂了,就不多解释了,<color value="#64FFFF00" type="TEXT_BACKGROUND" /> 注意这里的颜色值是 #64FFFF00 前面的64表示的是透明度。
这个地方在Java5和Java7版本之间有变化。
XML中还定义了JList的边框,使用的是和文本组件同一个边框图。