java重写JSplitPane的UI,设置分隔条的颜色

上网找了下想改变下分隔条的颜色,或者设置自己的图片,百度,google基本找不到.
于是,没办法,只能花学时间去搞搞.刚好也可以复习一下UI.
  步骤一:先找到JSplitPane
  找到它的setUI方法

 

/**
     * Sets the L&F object that renders this component.
     *
     * @param ui  the <code>SplitPaneUI</code> L&F object
     * @see UIDefaults#getUI
     * @beaninfo
     *        bound: true
     *       hidden: true
     *    attribute: visualUpdate true
     *  description: The UI object that implements the Component's LookAndFeel. 
     */
    public void setUI(SplitPaneUI ui) {
        if ((SplitPaneUI)this.ui != ui) {
            super.setUI(ui);
            revalidate();
        }
    }

 

这是一个设置JSplitPane UI的方法.

于是我们可以重写SplitPaneUI,但这时我们发现它是一个抽象的方法,所以想必它有很多实现类.我们可能找它的实现类.里面有各种UI方法的子类.分别用来设置各种外观.

下一步:

   找到它的子类BasicSplitPaneUI,想想,JSplitPane想重写中间的拖动条

我们可以先看下BasicSplitPaneUI的实现代码,先看下它的变量

    /**
     * The divider used for non-continuous layout is added to the split pane
     * with this object.
     */
    protected static final String NON_CONTINUOUS_DIVIDER =
        "nonContinuousDivider";


    /**
     * How far (relative) the divider does move when it is moved around by
     * the cursor keys on the keyboard.
     */
    protected static int KEYBOARD_DIVIDER_MOVE_OFFSET = 3;


    /**
     * JSplitPane instance this instance is providing
     * the look and feel for.
     */
    protected JSplitPane splitPane;


    /**
     * LayoutManager that is created and placed into the split pane.
     */
    protected BasicHorizontalLayoutManager layoutManager;


    /**
     * Instance of the divider for this JSplitPane.
     */
    protected BasicSplitPaneDivider divider;


    /**
     * Instance of the PropertyChangeListener for this JSplitPane.
     */
    protected PropertyChangeListener propertyChangeListener;


    /**
     * Instance of the FocusListener for this JSplitPane.
     */
    protected FocusListener focusListener;

    private Handler handler;

 

 从上面容易看出divider就是分隔条,

同时

public class BasicSplitPaneDivider extends Container
    implements PropertyChangeListener

 

可以看出它也是个组件,而且在BasicSplitPaneUI中它是个保护成员变量,所以我们想想,重新写它的paint方法,在里面我们可以设置颜色或者图片等.讲得太多变啰嗦了,呵呵,有兴趣的自己看看我的附件代码吧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值