Java中Synth外观学习(二)--定制JPanel的背景

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。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值