public class JSplitPane extends JComponent implements Accessible
JSplitPane is used to divide two (and only two)
 Components. The two Components
 are graphically divided based on the look and feel
 implementation, and the two Components can then be
 interactively resized by the user.
 Information on using JSplitPane is in
 How to Use Split Panes in
 The Java Tutorial.
 
 The two Components in a split pane can be aligned
 left to right using
 JSplitPane.HORIZONTAL_SPLIT, or top to bottom using
 JSplitPane.VERTICAL_SPLIT.
 The preferred way to change the size of the Components
 is to invoke
 setDividerLocation where location is either
 the new x or y position, depending on the orientation of the
 JSplitPane.
 
 To resize the Components to their preferred sizes invoke
 resetToPreferredSizes.
 
 When the user is resizing the Components the minimum
 size of the Components is used to determine the
 maximum/minimum position the Components
 can be set to. If the minimum size of the two
 components is greater than the size of the split pane the divider
 will not allow you to resize it. To alter the minimum size of a
 JComponent, see JComponent.setMinimumSize(java.awt.Dimension).
 
 When the user resizes the split pane the new space is distributed between
 the two components based on the resizeWeight property.
 A value of 0,
 the default, indicates the right/bottom component gets all the space,
 where as a value of 1 indicates the left/top component gets all the space.
 
Warning: Swing is not thread safe. For more information see Swing's Threading Policy.
 Warning:
 Serialized objects of this class will not be compatible with
 future Swing releases. The current serialization support is
 appropriate for short term storage or RMI between applications running
 the same version of Swing.  As of 1.4, support for long term storage
 of all JavaBeans™
 has been added to the java.beans package.
 Please see XMLEncoder.
| Modifier and Type | Class and Description | 
|---|---|
| protected class  | JSplitPane.AccessibleJSplitPaneThis class implements accessibility support for the
  JSplitPaneclass. | 
JComponent.AccessibleJComponentContainer.AccessibleAWTContainerComponent.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy| Modifier and Type | Field and Description | 
|---|---|
| static String | BOTTOMUsed to add a  Componentbelow the otherComponent. | 
| static String | CONTINUOUS_LAYOUT_PROPERTYBound property name for continuousLayout. | 
| protected boolean | continuousLayoutWhether or not the views are continuously redisplayed while
 resizing. | 
| static String | DIVIDERUsed to add a  Componentthat will represent the divider. | 
| static String | DIVIDER_LOCATION_PROPERTYBound property for the dividerLocation. | 
| static String | DIVIDER_SIZE_PROPERTYBound property name for border. | 
| protected int | dividerSizeSize of the divider. | 
| static int | HORIZONTAL_SPLITHorizontal split indicates the  Components are
 split along the x axis. | 
| static String | LAST_DIVIDER_LOCATION_PROPERTYBound property for lastLocation. | 
| protected int | lastDividerLocationPrevious location of the split pane. | 
| static String | LEFTUsed to add a  Componentto the left of the otherComponent. | 
| protected Component | leftComponentThe left or top component. | 
| static String | ONE_TOUCH_EXPANDABLE_PROPERTYBound property for oneTouchExpandable. | 
| protected boolean | oneTouchExpandableIs a little widget provided to quickly expand/collapse the
 split pane? | 
| protected int | orientationHow the views are split. | 
| static String | ORIENTATION_PROPERTYBound property name for orientation (horizontal or vertical). | 
| static String | RESIZE_WEIGHT_PROPERTYBound property for weight. | 
| static String | RIGHTUsed to add a  Componentto the right of the otherComponent. | 
| protected Component | rightComponentThe right or bottom component. | 
| static String | TOPUsed to add a  Componentabove the otherComponent. | 
| static int | VERTICAL_SPLITVertical split indicates the  Components are
 split along the y axis. | 
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH| Constructor and Description | 
|---|
| JSplitPane()Creates a new  JSplitPaneconfigured to arrange the child
 components side-by-side horizontally, using two buttons for the components. | 
| JSplitPane(int newOrientation)Creates a new  JSplitPaneconfigured with the
 specified orientation. | 
| JSplitPane(int newOrientation,
          boolean newContinuousLayout)Creates a new  JSplitPanewith the specified
 orientation and redrawing style. | 
| JSplitPane(int newOrientation,
          boolean newContinuousLayout,
          Component newLeftComponent,
          Component newRightComponent)Creates a new  JSplitPanewith the specified
 orientation and
 redrawing style, and with the specified components. | 
| JSplitPane(int newOrientation,
          Component newLeftComponent,
          Component newRightComponent)Creates a new  JSplitPanewith the specified
 orientation and the specified components. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | addImpl(Component comp,
       Object constraints,
       int index)Adds the specified component to this split pane. | 
| AccessibleContext | getAccessibleContext()Gets the AccessibleContext associated with this JSplitPane. | 
| Component | getBottomComponent()Returns the component below, or to the right of the divider. | 
| int | getDividerLocation()Returns the last value passed to  setDividerLocation. | 
| int | getDividerSize()Returns the size of the divider. | 
| int | getLastDividerLocation()Returns the last location the divider was at. | 
| Component | getLeftComponent()Returns the component to the left (or above) the divider. | 
| int | getMaximumDividerLocation()Returns the maximum location of the divider from the look and feel
 implementation. | 
| int | getMinimumDividerLocation()Returns the minimum location of the divider from the look and feel
 implementation. | 
| int | getOrientation()Returns the orientation. | 
| double | getResizeWeight()Returns the number that determines how extra space is distributed. | 
| Component | getRightComponent()Returns the component to the right (or below) the divider. | 
| Component | getTopComponent()Returns the component above, or to the left of the divider. | 
| SplitPaneUI | getUI()Returns the  SplitPaneUIthat is providing the
 current look and feel. | 
| String | getUIClassID()Returns the name of the L&F class that renders this component. | 
| boolean | isContinuousLayout()Gets the  continuousLayoutproperty. | 
| boolean | isOneTouchExpandable()Gets the  oneTouchExpandableproperty. | 
| boolean | isValidateRoot()Returns true, so that calls to  revalidateon any descendant of thisJSplitPanewill cause a request to be queued that
 will validate theJSplitPaneand all its descendants. | 
| protected void | paintChildren(Graphics g)Subclassed to message the UI with  finishedPaintingChildrenafter super has been messaged, as well as painting the border. | 
| protected String | paramString()Returns a string representation of this  JSplitPane. | 
| void | remove(Component component)Removes the child component,  componentfrom the
 pane. | 
| void | remove(int index)Removes the  Componentat the specified index. | 
| void | removeAll()Removes all the child components from the split pane. | 
| void | resetToPreferredSizes()Lays out the  JSplitPanelayout based on the preferred size
 of the children components. | 
| void | setBottomComponent(Component comp)Sets the component below, or to the right of the divider. | 
| void | setContinuousLayout(boolean newContinuousLayout)Sets the value of the  continuousLayoutproperty,
 which must betruefor the child components
 to be continuously
 redisplayed and laid out during user intervention. | 
| void | setDividerLocation(double proportionalLocation)Sets the divider location as a percentage of the
  JSplitPane's size. | 
| void | setDividerLocation(int location)Sets the location of the divider. | 
| void | setDividerSize(int newSize)Sets the size of the divider. | 
| void | setLastDividerLocation(int newLastLocation)Sets the last location the divider was at to
  newLastLocation. | 
| void | setLeftComponent(Component comp)Sets the component to the left (or above) the divider. | 
| void | setOneTouchExpandable(boolean newValue)Sets the value of the  oneTouchExpandableproperty,
 which must betruefor theJSplitPaneto provide a UI widget
 on the divider to quickly expand/collapse the divider. | 
| void | setOrientation(int orientation)Sets the orientation, or how the splitter is divided. | 
| void | setResizeWeight(double value)Specifies how to distribute extra space when the size of the split pane
 changes. | 
| void | setRightComponent(Component comp)Sets the component to the right (or below) the divider. | 
| void | setTopComponent(Component comp)Sets the component above, or to the left of the divider. | 
| void | setUI(SplitPaneUI ui)Sets the L&F object that renders this component. | 
| void | updateUI()Notification from the  UIManagerthat the L&F has changed. | 
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateadd, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeaction, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCyclepublic static final int VERTICAL_SPLIT
Components are
 split along the y axis.  For example the two
 Components will be split one on top of the other.public static final int HORIZONTAL_SPLIT
Components are
 split along the x axis.  For example the two
 Components will be split one to the left of the
 other.public static final String LEFT
Component to the left of the other
 Component.public static final String RIGHT
Component to the right of the other
 Component.public static final String TOP
Component above the other
 Component.public static final String BOTTOM
Component below the other
 Component.public static final String DIVIDER
Component that will represent the divider.public static final String ORIENTATION_PROPERTY
public static final String CONTINUOUS_LAYOUT_PROPERTY
public static final String DIVIDER_SIZE_PROPERTY
public static final String ONE_TOUCH_EXPANDABLE_PROPERTY
public static final String LAST_DIVIDER_LOCATION_PROPERTY
public static final String DIVIDER_LOCATION_PROPERTY
public static final String RESIZE_WEIGHT_PROPERTY
protected int orientation
protected boolean continuousLayout
protected Component leftComponent
protected Component rightComponent
protected int dividerSize
protected boolean oneTouchExpandable
protected int lastDividerLocation
public JSplitPane()
JSplitPane configured to arrange the child
 components side-by-side horizontally, using two buttons for the components.@ConstructorProperties(value="orientation") public JSplitPane(int newOrientation)
JSplitPane configured with the
 specified orientation.newOrientation - JSplitPane.HORIZONTAL_SPLIT or
                        JSplitPane.VERTICAL_SPLITIllegalArgumentException - if orientation
          is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT.public JSplitPane(int newOrientation,
                  boolean newContinuousLayout)
JSplitPane with the specified
 orientation and redrawing style.newOrientation - JSplitPane.HORIZONTAL_SPLIT or
                        JSplitPane.VERTICAL_SPLITnewContinuousLayout - a boolean, true for the components to
        redraw continuously as the divider changes position, false
        to wait until the divider position stops changing to redrawIllegalArgumentException - if orientation
          is not one of HORIZONTAL_SPLIT or VERTICAL_SPLITpublic JSplitPane(int newOrientation,
                  Component newLeftComponent,
                  Component newRightComponent)
JSplitPane with the specified
 orientation and the specified components.newOrientation - JSplitPane.HORIZONTAL_SPLIT or
                        JSplitPane.VERTICAL_SPLITnewLeftComponent - the Component that will
          appear on the left
          of a horizontally-split pane, or at the top of a
          vertically-split panenewRightComponent - the Component that will
          appear on the right
          of a horizontally-split pane, or at the bottom of a
          vertically-split paneIllegalArgumentException - if orientation
          is not one of: HORIZONTAL_SPLIT or VERTICAL_SPLITpublic JSplitPane(int newOrientation,
                  boolean newContinuousLayout,
                  Component newLeftComponent,
                  Component newRightComponent)
JSplitPane with the specified
 orientation and
 redrawing style, and with the specified components.newOrientation - JSplitPane.HORIZONTAL_SPLIT or
                        JSplitPane.VERTICAL_SPLITnewContinuousLayout - a boolean, true for the components to
        redraw continuously as the divider changes position, false
        to wait until the divider position stops changing to redrawnewLeftComponent - the Component that will
          appear on the left
          of a horizontally-split pane, or at the top of a
          vertically-split panenewRightComponent - the Component that will
          appear on the right
          of a horizontally-split pane, or at the bottom of a
          vertically-split paneIllegalArgumentException - if orientation
          is not one of HORIZONTAL_SPLIT or VERTICAL_SPLITpublic void setUI(SplitPaneUI ui)
ui - the SplitPaneUI L&F objectUIDefaults.getUI(javax.swing.JComponent)public SplitPaneUI getUI()
SplitPaneUI that is providing the
 current look and feel.SplitPaneUI object that renders this componentpublic void updateUI()
UIManager that the L&F has changed.
 Replaces the current UI object with the latest version from the
 UIManager.updateUI in class JComponentJComponent.updateUI()public String getUIClassID()
getUIClassID in class JComponentJComponent.getUIClassID(), 
UIDefaults.getUI(javax.swing.JComponent)public void setDividerSize(int newSize)
newSize - an integer giving the size of the divider in pixelspublic int getDividerSize()
public void setLeftComponent(Component comp)
comp - the Component to display in that positionpublic Component getLeftComponent()
Component displayed in that positionpublic void setTopComponent(Component comp)
comp - the Component to display in that positionpublic Component getTopComponent()
Component displayed in that positionpublic void setRightComponent(Component comp)
comp - the Component to display in that positionpublic Component getRightComponent()
Component displayed in that positionpublic void setBottomComponent(Component comp)
comp - the Component to display in that positionpublic Component getBottomComponent()
Component displayed in that positionpublic void setOneTouchExpandable(boolean newValue)
oneTouchExpandable property,
 which must be true for the
 JSplitPane to provide a UI widget
 on the divider to quickly expand/collapse the divider.
 The default value of this property is false.
 Some look and feels might not support one-touch expanding;
 they will ignore this property.newValue - true to specify that the split pane should provide a
        collapse/expand widgetisOneTouchExpandable()public boolean isOneTouchExpandable()
oneTouchExpandable property.oneTouchExpandable propertysetOneTouchExpandable(boolean)public void setLastDividerLocation(int newLastLocation)
newLastLocation.newLastLocation - an integer specifying the last divider location
        in pixels, from the left (or upper) edge of the pane to the
        left (or upper) edge of the dividerpublic int getLastDividerLocation()
public void setOrientation(int orientation)
orientation - an integer specifying the orientationIllegalArgumentException - if orientation is not one of:
        HORIZONTAL_SPLIT or VERTICAL_SPLIT.public int getOrientation()
setOrientation(int)public void setContinuousLayout(boolean newContinuousLayout)
continuousLayout property,
 which must be true for the child components
 to be continuously
 redisplayed and laid out during user intervention.
 The default value of this property is look and feel dependent.
 Some look and feels might not support continuous layout;
 they will ignore this property.newContinuousLayout - true if the components
        should continuously be redrawn as the divider changes positionisContinuousLayout()public boolean isContinuousLayout()
continuousLayout property.continuousLayout propertysetContinuousLayout(boolean)public void setResizeWeight(double value)
value - as described aboveIllegalArgumentException - if value is < 0 or > 1public double getResizeWeight()
public void resetToPreferredSizes()
JSplitPane layout based on the preferred size
 of the children components. This will likely result in changing
 the divider location.public void setDividerLocation(double proportionalLocation)
JSplitPane's size.
 
 This method is implemented in terms of
 setDividerLocation(int).
 This method immediately changes the size of the split pane based on
 its current size. If the split pane is not correctly realized and on
 screen, this method will have no effect (new divider location will
 become (current size * proportionalLocation) which is 0).
proportionalLocation - a double-precision floating point value
        that specifies a percentage, from zero (top/left) to 1.0
        (bottom/right)IllegalArgumentException - if the specified location is < 0
            or > 1.0public void setDividerLocation(int location)
setLastDividerLocation.location - an int specifying a UI-specific value (typically a
        pixel count)public int getDividerLocation()
setDividerLocation.
 The value returned from this method may differ from the actual
 divider location (if setDividerLocation was passed a
 value bigger than the current size).public int getMinimumDividerLocation()
nullpublic int getMaximumDividerLocation()
nullpublic void remove(Component component)
component from the
 pane. Resets the leftComponent or
 rightComponent instance variable, as necessary.remove in class Containercomponent - the Component to removeContainer.add(java.awt.Component), 
Container.invalidate(), 
Container.validate(), 
Container.remove(int)public void remove(int index)
Component at the specified index.
 Updates the leftComponent and rightComponent
 instance variables as necessary, and then messages super.remove in class Containerindex - an integer specifying the component to remove, where
        1 specifies the left/top component and 2 specifies the
        bottom/right componentContainer.add(java.awt.Component), 
Container.invalidate(), 
Container.validate(), 
Container.getComponentCount()public void removeAll()
leftComonent and rightComponent
 instance variables.removeAll in class ContainerContainer.add(java.awt.Component), 
Container.remove(int), 
Container.invalidate()public boolean isValidateRoot()
revalidate
 on any descendant of this JSplitPane
 will cause a request to be queued that
 will validate the JSplitPane and all its descendants.isValidateRoot in class JComponentJComponent.revalidate(), 
Container.isValidateRoot()protected void addImpl(Component comp, Object constraints, int index)
constraints identifies the left/top or
 right/bottom child component, and a component with that identifier
 was previously added, it will be removed and then comp
 will be added in its place. If constraints is not
 one of the known identifiers the layout manager may throw an
 IllegalArgumentException.
 The possible constraints objects (Strings) are:
constraints object is null,
 the component is added in the
 first available position (left/top if open, else right/bottom).addImpl in class Containercomp - the component to addconstraints - an Object specifying the
                    layout constraints
                    (position) for this componentindex - an integer specifying the index in the container's
                    list.IllegalArgumentException - if the constraints
          object does not match an existing componentContainer.addImpl(Component, Object, int)protected void paintChildren(Graphics g)
finishedPaintingChildren
 after super has been messaged, as well as painting the border.paintChildren in class JComponentg - the Graphics context within which to paintJComponent.paint(java.awt.Graphics), 
Container.paint(java.awt.Graphics)protected String paramString()
JSplitPane.
 This method
 is intended to be used only for debugging purposes, and the
 content and format of the returned string may vary between
 implementations. The returned string may be empty but may not
 be null.paramString in class JComponentJSplitPane.public AccessibleContext getAccessibleContext()
getAccessibleContext in interface AccessiblegetAccessibleContext in class Component Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2017, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.