Java中Synth外观学习(八)--List的定制二,带滚动条的List

本文介绍如何使用XML配置文件来定制Swing组件JScrollBar的样式,包括按钮、滑块和滑动槽等各个部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次的List没有滚动条,这次把滚动条加上。JList本身是没有这个滚动条的,这个滚动条是JScrollPane的。

滚动条是JScrollBar,

JScrollBar又分为三个部分。分别是1) Button,就是滚动条两边的箭头。 2)thumb,就是滚动条上的划块。 3)Track,就是划块下面的轨迹条,

不知道专业名称叫什么,就叫滑动槽好了。 =。=!

JScrollBar定制就是对这三个的定制。

直接看看效果图:


来看XML配置:

1、给JScrollPane指定边框

    <style id="scrollpanel">
        <imagePainter method="ScrollPaneBorder" path="resources/images/textfield.png"
                      sourceInsets="4 6 4 6" paintCenter="false"/>
        <insets top="4" left="6" bottom="4" right="6"/>
    </style>
    <bind style="scrollpanel" type="region" key="ScrollPane"/>

2、给JScrollBar的箭头按钮指定边框及背景。

    <style id="ScrollBar button">
        <opaque value="TRUE" />
        <state>
            <color value="#00FF00" type="BACKGROUND" />
        </state>
        <imagePainter method="ArrowButtonBorder" path="resources/images/arrow.png"
                      sourceInsets="2 2 2 2" paintCenter="true"/>
        <insets top="2" left="2" bottom="2" right="2"/>
    </style>
    <bind style="ScrollBar button" type="name" key="ScrollBar.button"/>
这里注意的是,bind时的类型是name,通过名称绑定。可以看到上图的箭头按钮被换成了定制的图片。

这里比较别扭的是,好像不能按照箭头的方向指定不同的外观,所以上图中下面的按钮箭头也是朝上的。

比较好的做法是实现 SynthPainter 中的 paintArrowButtonBackground 及 paintArrowButtonBorder 两个函数,

再根据箭头的方向,状态(鼠标是否在上面MOUSE_OVER)进行绘制。这个后面再做,这次就不做了。


3、指定Thumb外观(颜色及边框)

    <style id="ScrollBar thumb">
        <opaque value="TRUE" />
        <state>
            <color value="#6FFFF0" type="BACKGROUND" />
        </state>
        <imagePainter method="ScrollBarThumbBorder" path="resources/images/textfield.png"
                      sourceInsets="2 2 2 2" paintCenter="false"/>
        <insets top="2" left="2" bottom="2" right="2"/>
    </style>
    <bind style="ScrollBar thumb" type="region" key="ScrollBarThumb"/>

4、指定Track部分的外观

    <style id="ScrollBarTrack">
        <opaque value="TRUE" />
        <state>
            <color value="#FF00FF" type="BACKGROUND" />
        </state>
    </style>
    <bind style="ScrollBarTrack" type="region" key="ScrollBarTrack"/>

5、指定JScrollBar的背景
    <style id="ScrollBar">
        <opaque value="TRUE" />
        <state>
            <color value="#FF0000" type="BACKGROUND" />
        </state>
    </style>
    <bind style="ScrollBar" type="region" key="ScrollBar"/>
JScrollBar的背景其实可以不用指定,因为一般是看不到的,当然如果你没有指定上面的Button部分,那么在箭头的位置就是显示的JScrollBar的背景颜色,

一个红色的方块。如果没有指定Track的外观,那么实际Track部分显示的就是JScrollBar的背景颜色。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值