`
行者买刀
  • 浏览: 194121 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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

    博客分类:
  • J2SE
阅读更多

上网找了下想改变下分隔条的颜色,或者设置自己的图片,百度,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方法,在里面我们可以设置颜色或者图片等.讲得太多变啰嗦了,呵呵,有兴趣的自己看看我的附件代码吧.

  • ui.rar (2.4 KB)
  • 下载次数: 343
分享到:
评论
4 楼 lookforwarding 2013-11-29  
3 楼 jalen 2011-02-22  
晕,我知道这是加载图片的,你不放pic上去这个DEMO怎么运行
2 楼 行者买刀 2011-01-11  
是个图片包的类,只是用来加载图片的。
1 楼 jalen 2011-01-10  
pic是个什么类啊,昏

相关推荐

    kk.rar_jsplitpane UI_成绩管理系统

    `JSplitPane` 提供了动态调整两侧组件大小的能力,用户可以根据自己的需求手动调整分隔条的位置。 这个成绩管理系统可能利用了`JSplitPane` 来组织界面,例如,将学生列表显示在一边,而另一边则显示单个学生的详细...

    flex4 实现分隔栏 类似java里面的JSplitPane的功能

    NULL 博文链接:https://silentwu.iteye.com/blog/1605617

    JSplitPane

    JSplitPane

    JSplitPane的用法

    - `orientation`参数定义了分隔方向,可以是`JSplitPane.HORIZONTAL_SPLIT`(水平分隔)或`JSplitPane.VERTICAL_SPLIT`(垂直分隔)。 - 可选的两个`Component`参数分别指定了分隔面板的左右(水平分隔)或上下...

    java swing-JSplitPane的使用

    JSplitPane是Swing库提供的一个分割面板组件。它可以在图形界面中创建两个子组件,并允许用户通过拖动分割条来调整子组件的大小。

    Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例

    同时,还可以设置分隔条的可见性,当不需要分隔条时可以隐藏它。 总之,JToolBar和JSplitPane是Java Swing中非常有用的组件,它们可以大大提升应用程序的用户交互体验。JToolBar提供了快速访问常用功能的途径,而...

    实例22 分割一个面板(java绝对新手实例)

    4. 设置分隔条的位置:可以使用`setDividerLocation`方法来设置分隔条的初始位置,以像素为单位。 ```java splitPane.setDividerLocation(200); // 分隔条初始位置设为200像素 ``` 5. 创建和设置主窗口:创建一个...

    SplitPanel的使用

    默认情况下,`JSplitPane`提供了一个分隔条,用户可以通过拖动这个分隔条来改变两侧组件的显示面积。在`myEclipse`这样的集成开发环境中,创建和运行包含`JSplitPane`的应用程序是非常直观的。 首先,让我们了解...

    java swing漂亮界面 超酷 javaswing教程

    4. **组件定制**:Swing 允许你通过继承和重写方法来自定义组件的行为和外观,比如创建一个带有特殊功能的按钮或一个有特定颜色的文本域。 5. **JTable和JTree**:这两者是Swing中用于展示数据的组件,JTable用于...

    Java Swing 组件全演示

    Java Swing 是Java GUI(图形用户界面)库的一部分,用于构建桌面应用程序。它提供了丰富的组件集合,使得开发者可以...对于初学者而言,这是一条很好的学习路径,有助于他们从实践中建立起对Java Swing的全面认识。

    java swing笔记

    在Java Swing中,`JSplitPane`是一个非常强大的组件,用于创建可调整大小的容器来容纳两个子组件(例如面板或滚动窗格),并且允许用户通过拖动分割条来调整每个子组件的大小。下面将详细介绍如何使用`JSplitPane`来...

    Java语言程序设计课程设计实训项目——模拟实现Windows-资源管理器的GUI界面(第3部分).pdf

    6. **分隔条设置**: - **setDividerSize**:设置分隔条的宽度。 - **setDividerLocation**:设置分隔条的初始位置。 - **setEnabled**:控制分隔条是否可以被用户拖动。 7. **组件添加**: - **JTree**:在...

    Java-Swing嵌入浏览器(本地浏览器和webkit浏览器-火狐内核)

    3. **设置浏览器容器**:将`Browser`实例放入Swing的容器,如`JPanel`或`JSplitPane`,以在Swing应用中显示。 4. **加载网页**:调用`Browser`对象的`setUrl()`方法,传入你要加载的网页URL。 5. **事件处理**:...

    Java制作浏览器和源代码查看器.rar

    Java制作的网页浏览器和源... //设置分隔位置   spane.setDividerSize(2); //设置分隔栏尺寸   Container container=getContentPane(); //得到容器   container.add(p1,BorderLayout.NORTH); //增加组件到容器上

    基于Java的实例源码-编写的HTML浏览器.zip

    2. JSplitPane与JScrollPane:为了实现页面的可滚动性,开发人员可能使用了JSplitPane来创建分隔条,使用户可以调整预览区域的大小。同时,JScrollPane通常被用来包裹JTextComponent(如JEditorPane或JTextArea),...

    Java实现文字随意拖动.rar

    Java实现文字随意拖动,随处拖动文本字符,移动到任意位置,super("文本的拖动处理"); //调用父类构造函数  String[] data = {"one", "two", "three", "four"}; //字符数组,用于构造列表框  DragList list=new...

    Java JTree+JTable应用

    而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户可以根据需要调整两个部分的大小。 在Eclipse环境中,这是一个Maven项目,这意味着它依赖于Maven...

    面板的分割java

    5. **子组件**:`JSplitPane`有两个子组件,分别位于分割条的两侧,可以通过`setLeftComponent()`、`setRightComponent()`、`setTopComponent()`、`setBottomComponent()`等方法进行设置。 ### 二、实现面板分割 ...

    JAVA组件小全一览表

    * JSplitPane:javax.swing.JSplitPane 是一个分隔面板组件,用于承载基本组件。其构造方法包括 JSplitPane() 和 JSplitPane(int newOrientation)。 * JToolBar:javax.swing.JToolBar 是一个工具栏组件,用于承载...

    java实例_简单Java_IDE工具

    例如,使用JSplitPane分隔主编辑区和信息显示区,JDesktopPane作为多文档的容器,JScrollPane则包裹JTextArea以实现滚动查看。 在实际编码过程中,我们将逐步添加更多的功能,如文件操作、项目管理、编译和运行等。...

Global site tag (gtag.js) - Google Analytics