上网找了下想改变下分隔条的颜色,或者设置自己的图片,百度,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方法,在里面我们可以设置颜色或者图片等.讲得太多变啰嗦了,呵呵,有兴趣的自己看看我的附件代码吧.
分享到:
相关推荐
`JSplitPane` 提供了动态调整两侧组件大小的能力,用户可以根据自己的需求手动调整分隔条的位置。 这个成绩管理系统可能利用了`JSplitPane` 来组织界面,例如,将学生列表显示在一边,而另一边则显示单个学生的详细...
NULL 博文链接:https://silentwu.iteye.com/blog/1605617
JSplitPane
- `orientation`参数定义了分隔方向,可以是`JSplitPane.HORIZONTAL_SPLIT`(水平分隔)或`JSplitPane.VERTICAL_SPLIT`(垂直分隔)。 - 可选的两个`Component`参数分别指定了分隔面板的左右(水平分隔)或上下...
JSplitPane是Swing库提供的一个分割面板组件。它可以在图形界面中创建两个子组件,并允许用户通过拖动分割条来调整子组件的大小。
同时,还可以设置分隔条的可见性,当不需要分隔条时可以隐藏它。 总之,JToolBar和JSplitPane是Java Swing中非常有用的组件,它们可以大大提升应用程序的用户交互体验。JToolBar提供了快速访问常用功能的途径,而...
4. 设置分隔条的位置:可以使用`setDividerLocation`方法来设置分隔条的初始位置,以像素为单位。 ```java splitPane.setDividerLocation(200); // 分隔条初始位置设为200像素 ``` 5. 创建和设置主窗口:创建一个...
默认情况下,`JSplitPane`提供了一个分隔条,用户可以通过拖动这个分隔条来改变两侧组件的显示面积。在`myEclipse`这样的集成开发环境中,创建和运行包含`JSplitPane`的应用程序是非常直观的。 首先,让我们了解...
4. **组件定制**:Swing 允许你通过继承和重写方法来自定义组件的行为和外观,比如创建一个带有特殊功能的按钮或一个有特定颜色的文本域。 5. **JTable和JTree**:这两者是Swing中用于展示数据的组件,JTable用于...
Java Swing 是Java GUI(图形用户界面)库的一部分,用于构建桌面应用程序。它提供了丰富的组件集合,使得开发者可以...对于初学者而言,这是一条很好的学习路径,有助于他们从实践中建立起对Java Swing的全面认识。
在Java Swing中,`JSplitPane`是一个非常强大的组件,用于创建可调整大小的容器来容纳两个子组件(例如面板或滚动窗格),并且允许用户通过拖动分割条来调整每个子组件的大小。下面将详细介绍如何使用`JSplitPane`来...
6. **分隔条设置**: - **setDividerSize**:设置分隔条的宽度。 - **setDividerLocation**:设置分隔条的初始位置。 - **setEnabled**:控制分隔条是否可以被用户拖动。 7. **组件添加**: - **JTree**:在...
Java制作的网页浏览器和源... //设置分隔位置 spane.setDividerSize(2); //设置分隔栏尺寸 Container container=getContentPane(); //得到容器 container.add(p1,BorderLayout.NORTH); //增加组件到容器上
3. **设置浏览器容器**:将`Browser`实例放入Swing的容器,如`JPanel`或`JSplitPane`,以在Swing应用中显示。 4. **加载网页**:调用`Browser`对象的`setUrl()`方法,传入你要加载的网页URL。 5. **事件处理**:...
2. JSplitPane与JScrollPane:为了实现页面的可滚动性,开发人员可能使用了JSplitPane来创建分隔条,使用户可以调整预览区域的大小。同时,JScrollPane通常被用来包裹JTextComponent(如JEditorPane或JTextArea),...
Java实现文字随意拖动,随处拖动文本字符,移动到任意位置,super("文本的拖动处理"); //调用父类构造函数 String[] data = {"one", "two", "three", "four"}; //字符数组,用于构造列表框 DragList list=new...
而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户可以根据需要调整两个部分的大小。 在Eclipse环境中,这是一个Maven项目,这意味着它依赖于Maven...
5. **子组件**:`JSplitPane`有两个子组件,分别位于分割条的两侧,可以通过`setLeftComponent()`、`setRightComponent()`、`setTopComponent()`、`setBottomComponent()`等方法进行设置。 ### 二、实现面板分割 ...
* JSplitPane:javax.swing.JSplitPane 是一个分隔面板组件,用于承载基本组件。其构造方法包括 JSplitPane() 和 JSplitPane(int newOrientation)。 * JToolBar:javax.swing.JToolBar 是一个工具栏组件,用于承载...
例如,使用JSplitPane分隔主编辑区和信息显示区,JDesktopPane作为多文档的容器,JScrollPane则包裹JTextArea以实现滚动查看。 在实际编码过程中,我们将逐步添加更多的功能,如文件操作、项目管理、编译和运行等。...