Class JXCollapsiblePane
- All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable, AlphaPaintable, BackgroundPaintable
JXCollapsiblePane provides a component which can collapse or
expand its content area with animation and fade in/fade out effects.
It also acts as a standard container for other Swing components.
The JXCollapsiblePane has a "content pane" that actually holds the
displayed contents. This means that colors, fonts, and other display
configuration items must be set on the content pane.
// to set the font
collapsiblePane.getContentPane().setFont(font);
// to set the background color
collapsiblePane.getContentPane().setBackground(Color.RED);
For convenience, the add and remove methods forward to the
content pane. The following code shows to ways to add a child to the
content pane.
// to add a child
collapsiblePane.getContentPane().add(component);
// to add a child
collapsiblePane.add(component);
To set the content pane, do not use add, use setContentPane(Container).
In this example, the JXCollapsiblePane is used to build
a Search pane which can be shown and hidden on demand.
JXCollapsiblePane cp = new JXCollapsiblePane();
// JXCollapsiblePane can be used like any other container
cp.setLayout(new BorderLayout());
// the Controls panel with a textfield to filter the tree
JPanel controls = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 0));
controls.add(new JLabel("Search:"));
controls.add(new JTextField(10));
controls.add(new JButton("Refresh"));
controls.setBorder(new TitledBorder("Filters"));
cp.add("Center", controls);
JXFrame frame = new JXFrame();
frame.setLayout(new BorderLayout());
// Put the "Controls" first
frame.add("North", cp);
// Then the tree - we assume the Controls would somehow filter the tree
JScrollPane scroll = new JScrollPane(new JTree());
frame.add("Center", scroll);
// Show/hide the "Controls"
JButton toggle = new JButton(cp.getActionMap().get(JXCollapsiblePane.TOGGLE_ACTION));
toggle.setText("Show/Hide Search Panel");
frame.add("South", toggle);
frame.pack();
frame.setVisible(true);
The JXCollapsiblePane has a default toggle action registered
under the name TOGGLE_ACTION. Bind this action to a button and
pressing the button will automatically toggle the pane between expanded
and collapsed states. Additionally, you can define the icons to use through
the EXPAND_ICON and COLLAPSE_ICON properties on the action.
Example
// get the built-in toggle action
Action toggleAction = collapsible.getActionMap().
get(JXCollapsiblePane.TOGGLE_ACTION);
// use the collapse/expand icons from the JTree UI
toggleAction.putValue(JXCollapsiblePane.COLLAPSE_ICON,
UIManager.getIcon("Tree.expandedIcon"));
toggleAction.putValue(JXCollapsiblePane.EXPAND_ICON,
UIManager.getIcon("Tree.collapsedIcon"));
Note: JXCollapsiblePane requires its parent container to have a
LayoutManager using getPreferredSize() when
calculating its layout (example VerticalLayout,
BorderLayout).
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final classThis class actual provides the animation support for scrolling up/down this component.private static classParameters controlling the animationsstatic interfaceTagging interface for containers in a JXCollapsiblePane hierarchy who needs to be revalidated (invalidate/validate/repaint) when the pane is expanding or collapsing.static enumThe direction defines how the collapsible pane will collapse.private classToggles the JXCollapsiblePane state and updates its icon based on the JXCollapsiblePane "collapsed" status.private final classNested classes/interfaces inherited from class JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate TimerTimer used for doing the transparency animation (fade-in)static final StringThe icon used by the "toggle" action when the JXCollapsiblePane is expanded, i.e the icon which indicates the pane can be collapsed.private booleanIndicates whether the component is collapsed or expandedprivate booleanprivate intprivate JXCollapsiblePane.DirectionDefines the orientation of the component.static final StringThe icon used by the "toggle" action when the JXCollapsiblePane is collapsed, i.e the icon which indicates the pane can be expanded.static final StringJXCollapsible has a built-in toggle action which can be bound to buttons.private booleanFields inherited from class JXPanel
fakeTransparentFields inherited from class JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new JXCollapsiblePane with aJXPanelas content pane and a verticalVerticalLayoutwith a gap of 2 pixels as layout manager and a vertical orientation.JXCollapsiblePane(JXCollapsiblePane.Direction direction) Constructs a new JXCollapsiblePane with aJXPanelas content pane and the specified direction. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidOverridden to redirect call to the content pane.protected ContainerCreates the content pane used by this collapsible pane.A collapsible pane always returns its preferred size for the minimum size to ensure that the collapsing happens correctly.The critical part of the animation of thisJXCollapsiblePanerelies on the calculation of its preferred size.booleanbooleanvoidremove(int index) Overridden to redirect call to the content pane.voidOverridden to redirect call to the content panevoidOverridden to redirect call to the content pane.voidsetAnimated(boolean animated) If true, enables the animation when pane is collapsed/expanded.private voidSets the parameters controlling the animationvoidvoidsetCollapsed(boolean val) Expands or collapses thisJXCollapsiblePane.voidvoidsetContentPane(Container contentPanel) Sets the content pane of this JXCollapsiblePane.voidsetDirection(JXCollapsiblePane.Direction direction) Changes the direction of this collapsible pane.voidsetLayout(LayoutManager mgr) Overridden to redirect call to the content pane.voidsetMinimumSize(Dimension minimumSize) Forwards to the content pane.voidsetOpaque(boolean opaque) voidsetPreferredSize(Dimension preferredSize) Methods inherited from class JXPanel
getAlpha, getBackgroundPainter, getEffectiveAlpha, getPainterChangeListener, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableHeightHint, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollableWidthHint, installRepaintManager, isAlpha, isInheritAlpha, isOpaque, isOpaquePatch, isPaintBorderInsets, isPaintingBackground, isPaintingOrigin, isPatch, isTransparentBackground, paint, paintComponent, paintComponentPatch, setAlpha, setBackgroundPainter, setInheritAlpha, setOpaquePatch, setPaintBorderInsets, setScrollableHeightHint, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth, setScrollableWidthHint, uninstallRepaintManagerMethods inherited from class JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods inherited from class JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, 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, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setNextFocusableComponent, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class Container
add, 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, transferFocusDownCycle, validate, validateTreeMethods inherited from class 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, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
TOGGLE_ACTION
JXCollapsible has a built-in toggle action which can be bound to buttons. Accesses the action throughcollapsiblePane.getActionMap().get(JXCollapsiblePane.TOGGLE_ACTION).- See Also:
-
COLLAPSE_ICON
The icon used by the "toggle" action when the JXCollapsiblePane is expanded, i.e the icon which indicates the pane can be collapsed.- See Also:
-
EXPAND_ICON
The icon used by the "toggle" action when the JXCollapsiblePane is collapsed, i.e the icon which indicates the pane can be expanded.- See Also:
-
collapsed
private boolean collapsedIndicates whether the component is collapsed or expanded -
direction
Defines the orientation of the component. -
animateTimer
Timer used for doing the transparency animation (fade-in) -
animator
-
currentDimension
private int currentDimension -
wrapper
-
useAnimation
private boolean useAnimation -
animationParams
-
collapseFiringState
private boolean collapseFiringState
-
-
Constructor Details
-
JXCollapsiblePane
public JXCollapsiblePane()Constructs a new JXCollapsiblePane with aJXPanelas content pane and a verticalVerticalLayoutwith a gap of 2 pixels as layout manager and a vertical orientation. -
JXCollapsiblePane
Constructs a new JXCollapsiblePane with aJXPanelas content pane and the specified direction.- Parameters:
direction- the direction to collapse the container
-
-
Method Details
-
createContentPane
Creates the content pane used by this collapsible pane.- Returns:
- the content pane
-
getContentPane
- Returns:
- the content pane
-
setContentPane
Sets the content pane of this JXCollapsiblePane. ThecontentPanelshould implementScrollableand returntruefromScrollable.getScrollableTracksViewportHeight()andScrollable.getScrollableTracksViewportWidth(). If the content pane fails to do so and aJScrollPaneis added as a child, it is likely that the scroll pane will never correctly size. While it is not strictly necessary to implementScrollablein this way, the default content pane does so.- Parameters:
contentPanel- the container delegate used to hold all of the contents for this collapsible pane- Throws:
IllegalArgumentException- if contentPanel is null
-
setLayout
Overridden to redirect call to the content pane. -
addImpl
-
remove
-
remove
-
removeAll
-
setAnimated
public void setAnimated(boolean animated) If true, enables the animation when pane is collapsed/expanded. If false, animation is turned off.When animated, the
JXCollapsiblePanewill progressively reduce (when collapsing) or enlarge (when expanding) the height of its content area until it becomes 0 or until it reaches the preferred height of the components it contains. The transparency of the content area will also change during the animation.If not animated, the
JXCollapsiblePanewill simply hide (collapsing) or show (expanding) its content area.- Parameters:
animated-
-
isAnimated
public boolean isAnimated()- Returns:
- true if the pane is animated, false otherwise
- See Also:
-
setComponentOrientation
- Overrides:
setComponentOrientationin classComponent
-
setDirection
Changes the direction of this collapsible pane. Doing so changes the layout of the underlying content pane. If the chosen direction is vertical, a vertical layout with a gap of 2 pixels is chosen. Otherwise, a horizontal layout with a gap of 2 pixels is chosen.- Parameters:
direction- the newJXCollapsiblePane.Directionfor this collapsible pane- Throws:
IllegalStateException- when this method is called while a collapsing/restore operation is running- See Also:
-
getDirection
- Returns:
- the current
JXCollapsiblePane.Direction. - See Also:
-
isCollapsed
public boolean isCollapsed()- Returns:
- true if the pane is collapsed, false if expanded
-
setCollapsed
public void setCollapsed(boolean val) Expands or collapses thisJXCollapsiblePane.If the component is collapsed and
valis false, then this call expands the JXCollapsiblePane, such that the entire JXCollapsiblePane will be visible. IfisAnimated()returns true, the expansion will be accompanied by an animation.However, if the component is expanded and
valis true, then this call collapses the JXCollapsiblePane, such that the entire JXCollapsiblePane will be invisible. IfisAnimated()returns true, the collapse will be accompanied by an animation.As of SwingX 1.6.3, JXCollapsiblePane only fires property change events when the component's state is accurate. This means that animated collapsible pane's only fire events once the animation is complete.
- See Also:
-
getBorder
- Overrides:
getBorderin classJComponent
-
setBorder
- Overrides:
setBorderin classJComponent
-
setOpaque
public void setOpaque(boolean opaque) Setting the component to be opaque will reset the alpha setting to
1f(full opaqueness). Setting the component to be non-opaque will restore the previous alpha transparency. If the component is non-opaque with a fully-opaque alpha value (1f), the behavior should be the same as as aJPanelthat is non-opaque.Internals of JXCollasiplePane are designed to be opaque because some Look and Feel implementations having painting issues otherwise. JXCollapsiblePane and its internals will respect
setOpaque, calling this method will not only update the collapsible pane, but also all internals. This method does not modify thecontent pane, as it is not considered an internal. -
getMinimumSize
A collapsible pane always returns its preferred size for the minimum size to ensure that the collapsing happens correctly.To query the minimum size of the contents user
getContentPane().getMinimumSize().- Overrides:
getMinimumSizein classJComponent- Returns:
- the preferred size of the component
-
setMinimumSize
Forwards to the content pane.- Overrides:
setMinimumSizein classJComponent- Parameters:
minimumSize- the size to set on the content pane
-
getPreferredSize
The critical part of the animation of thisJXCollapsiblePanerelies on the calculation of its preferred size. During the animation, its preferred size (specially its height) will change, when expanding, from 0 to the preferred size of the content pane, and the reverse when collapsing.- Overrides:
getPreferredSizein classJComponent- Returns:
- this component preferred size
-
setPreferredSize
- Overrides:
setPreferredSizein classJComponent
-
setAnimationParams
Sets the parameters controlling the animation- Parameters:
params-- Throws:
IllegalArgumentException- if params is null
-