Class JXMultiSplitPane

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, BackgroundPaintable

    @JavaBean
    public class JXMultiSplitPane
    extends javax.swing.JPanel
    implements BackgroundPaintable

    All properties in this class are bound: when a properties value is changed, all PropertyChangeListeners are fired.

    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected class  JXMultiSplitPane.AccessibleMultiSplitPane  
      private class  JXMultiSplitPane.DefaultDividerPainter  
      static class  JXMultiSplitPane.DividerPainter
      Draws a single Divider.
      private class  JXMultiSplitPane.InputHandler  
      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      MultiSplitLayout.Divider activeDivider()
      Returns the Divider that's currently being moved, typically because the user is dragging it, or null.
      private void cancelDrag()  
      private void clearDragState()  
      private void finishDrag​(int x, int y)  
      javax.accessibility.AccessibleContext getAccessibleContext()  
      Painter getBackgroundPainter()
      Returns the current background painter.
      JXMultiSplitPane.DividerPainter getDividerPainter()
      The DividerPainter that's used to paint Dividers on this MultiSplitPane.
      int getDividerSize()
      A convenience method that returns the MultiSplitLayout dividerSize property.
      protected java.awt.Dimension getMaxNodeSize​(MultiSplitLayout msl, MultiSplitLayout.Node n)
      Set the maximum node size.
      protected java.awt.Dimension getMinNodeSize​(MultiSplitLayout msl, MultiSplitLayout.Node n)
      Set the minimum node size.
      MultiSplitLayout getMultiSplitLayout()
      A convenience method that returns the layout manager cast to MutliSplitLayout.
      boolean isContinuousLayout()
      Returns true if dragging a divider only updates the layout when the drag gesture ends (typically, when the mouse button is released).
      boolean isPaintBorderInsets()
      Determines whether this component paints its background paint underneath the border.
      protected void paintChildren​(java.awt.Graphics g)
      Uses the DividerPainter (if any) to paint each Divider that overlaps the clip Rectangle.
      protected void paintComponent​(java.awt.Graphics g)
      Calls the UI delegate's paint method, if the UI delegate is non-null.
      private void repaintDragLimits()  
      void setBackgroundPainter​(Painter p)
      Specifies a Painter to use to paint the background of this JXPanel.
      void setContinuousLayout​(boolean continuousLayout)
      Sets the value of the continuousLayout property.
      void setDividerPainter​(JXMultiSplitPane.DividerPainter dividerPainter)
      Sets the DividerPainter that's used to paint Dividers on this MultiSplitPane.
      void setDividerSize​(int dividerSize)
      A convenience method that sets the MultiSplitLayout dividerSize property.
      void setModel​(MultiSplitLayout.Node model)
      A convenience method that sets the MultiSplitLayout model.
      void setPaintBorderInsets​(boolean paintBorderInsets)
      private void startDrag​(int mx, int my)  
      private void updateCursor​(int x, int y, boolean show)  
      private void updateDrag​(int mx, int my)  
      • Methods inherited from class javax.swing.JPanel

        getUI, getUIClassID, paramString, setUI, updateUI
      • Methods inherited from class javax.swing.JComponent

        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, isValidateRoot, paint, paintBorder, 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, update
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, 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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • accessibleContext

        private javax.accessibility.AccessibleContext accessibleContext
      • continuousLayout

        private boolean continuousLayout
      • backgroundPainter

        private Painter backgroundPainter
      • paintBorderInsets

        private boolean paintBorderInsets
      • dragUnderway

        private boolean dragUnderway
      • initialDividerBounds

        private java.awt.Rectangle initialDividerBounds
      • oldFloatingDividers

        private boolean oldFloatingDividers
      • dragOffsetX

        private int dragOffsetX
      • dragOffsetY

        private int dragOffsetY
      • dragMin

        private int dragMin
      • dragMax

        private int dragMax
    • Constructor Detail

      • JXMultiSplitPane

        public JXMultiSplitPane()
        Creates a MultiSplitPane with it's LayoutManager set to to an empty MultiSplitLayout.
      • JXMultiSplitPane

        public JXMultiSplitPane​(MultiSplitLayout layout)
        Creates a MultiSplitPane.
        Parameters:
        layout - the new split pane's layout
    • Method Detail

      • setDividerSize

        public final void setDividerSize​(int dividerSize)
        A convenience method that sets the MultiSplitLayout dividerSize property. Equivalent to getMultiSplitLayout().setDividerSize(newDividerSize).
        Parameters:
        dividerSize - the value of the dividerSize property
        See Also:
        getMultiSplitLayout(), MultiSplitLayout.setDividerSize(int)
      • setContinuousLayout

        public void setContinuousLayout​(boolean continuousLayout)
        Sets the value of the continuousLayout property. If true, then the layout is revalidated continuously while a divider is being moved. The default value of this property is true.
        Parameters:
        continuousLayout - value of the continuousLayout property
        See Also:
        isContinuousLayout()
      • isContinuousLayout

        public boolean isContinuousLayout()
        Returns true if dragging a divider only updates the layout when the drag gesture ends (typically, when the mouse button is released).
        Returns:
        the value of the continuousLayout property
        See Also:
        setContinuousLayout(boolean)
      • activeDivider

        public MultiSplitLayout.Divider activeDivider()
        Returns the Divider that's currently being moved, typically because the user is dragging it, or null.
        Returns:
        the Divider that's being moved or null.
      • setDividerPainter

        public void setDividerPainter​(JXMultiSplitPane.DividerPainter dividerPainter)
        Sets the DividerPainter that's used to paint Dividers on this MultiSplitPane. The default DividerPainter only draws the activeDivider (if there is one) and then, only if continuousLayout is false. The value of this property is used by the paintChildren method: Dividers are painted after the MultiSplitPane's children have been rendered so that the activeDivider can appear "on top of" the children.
        Parameters:
        dividerPainter - the value of the dividerPainter property, can be null
        See Also:
        paintChildren(java.awt.Graphics), activeDivider()
      • paintComponent

        protected void paintComponent​(java.awt.Graphics g)
        Calls the UI delegate's paint method, if the UI delegate is non-null. We pass the delegate a copy of the Graphics object to protect the rest of the paint code from irrevocable changes (for example, Graphics.translate).

        If you override this in a subclass you should not make permanent changes to the passed in Graphics. For example, you should not alter the clip Rectangle or modify the transform. If you need to do these operations you may find it easier to create a new Graphics from the passed in Graphics and manipulate it. Further, if you do not invoker super's implementation you must honor the opaque property, that is if this component is opaque, you must completely fill in the background in a non-opaque color. If you do not honor the opaque property you will likely see visual artifacts.

        The passed in Graphics object might have a transform other than the identify transform installed on it. In this case, you might get unexpected results if you cumulatively apply another transform.

        Overrides:
        paintComponent in class javax.swing.JComponent
        Parameters:
        g - the Graphics object to protect
        See Also:
        JComponent.paint(Graphics), ComponentUI
      • setBackgroundPainter

        public void setBackgroundPainter​(Painter p)
        Specifies a Painter to use to paint the background of this JXPanel. If p is not null, then setOpaque(false) will be called as a side effect. A component should not be opaque if painters are being used, because Painters may paint transparent pixels or not paint certain pixels, such as around the border insets.
        Specified by:
        setBackgroundPainter in interface BackgroundPaintable
        Parameters:
        p - the new background painter; may be null
      • isPaintBorderInsets

        public boolean isPaintBorderInsets()
        Determines whether this component paints its background paint underneath the border.
        Specified by:
        isPaintBorderInsets in interface BackgroundPaintable
        Returns:
        true to paint under the border; false otherwise
      • paintChildren

        protected void paintChildren​(java.awt.Graphics g)
        Uses the DividerPainter (if any) to paint each Divider that overlaps the clip Rectangle. This is done after the call to super.paintChildren() so that Dividers can be rendered "on top of" the children.

        Overrides:
        paintChildren in class javax.swing.JComponent
      • startDrag

        private void startDrag​(int mx,
                               int my)
      • getMaxNodeSize

        protected java.awt.Dimension getMaxNodeSize​(MultiSplitLayout msl,
                                                    MultiSplitLayout.Node n)
        Set the maximum node size. This method can be overridden to limit the size of a node during a drag operation on a divider. When implementing this method in a subclass the node instance should be checked, for example: class MyMultiSplitPane extends JXMultiSplitPane { protected Dimension getMaxNodeSize( MultiSplitLayout msl, Node n ) { if (( n instanceof Leaf ) && ((Leaf)n).getName().equals( "top" )) return msl.maximumNodeSize( n ); return null; } }
        Parameters:
        msl - the MultiSplitLayout used by this pane
        n - the node being resized
        Returns:
        the maximum size or null (by default) to ignore the maximum size.
      • getMinNodeSize

        protected java.awt.Dimension getMinNodeSize​(MultiSplitLayout msl,
                                                    MultiSplitLayout.Node n)
        Set the minimum node size. This method can be overridden to limit the size of a node during a drag operation on a divider.
        Parameters:
        msl - the MultiSplitLayout used by this pane
        n - the node being resized
        Returns:
        the maximum size or null (by default) to ignore the maximum size.
      • repaintDragLimits

        private void repaintDragLimits()
      • updateDrag

        private void updateDrag​(int mx,
                                int my)
      • clearDragState

        private void clearDragState()
      • finishDrag

        private void finishDrag​(int x,
                                int y)
      • cancelDrag

        private void cancelDrag()
      • updateCursor

        private void updateCursor​(int x,
                                  int y,
                                  boolean show)
      • getAccessibleContext

        public javax.accessibility.AccessibleContext getAccessibleContext()
        Specified by:
        getAccessibleContext in interface javax.accessibility.Accessible
        Overrides:
        getAccessibleContext in class javax.swing.JPanel