Class JXCollapsiblePane
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
,Scrollable
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
).
- Author:
- rbair (from the JDNC project), Frederic Lavigne, Karl George Schaefer
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Tagging interface for containers in a JXCollapsiblePane hierarchy who needs to be revalidated (invalidate/validate/repaint) when the pane is expanding or collapsing.static enum
The direction defines how the collapsible pane will collapse.Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Used when generating PropertyChangeEvents for the "animationState" property.static final String
The icon used by the "toggle" action when the JXCollapsiblePane is expanded, i.e the icon which indicates the pane can be collapsed.static final String
The icon used by the "toggle" action when the JXCollapsiblePane is collapsed, i.e the icon which indicates the pane can be expanded.static final String
JXCollapsible has a built-in toggle action which can be bound to buttons.Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new JXCollapsiblePane with aJXPanel
as content pane and a verticalVerticalLayout
with a gap of 2 pixels as layout manager and a vertical orientation.JXCollapsiblePane
(LayoutManager layout) Constructs a new JXCollapsiblePane with aJPanel
as content pane and the given LayoutManager and a vertical orientationJXCollapsiblePane
(JXCollapsiblePane.Direction direction) Constructs a new JXCollapsiblePane with aJXPanel
as content pane and the specified direction.JXCollapsiblePane
(JXCollapsiblePane.Direction direction, LayoutManager layout) Constructs a new JXCollapsiblePane with aJPanel
as content pane and the given LayoutManager and orientation. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Overriden to redirect call to the content 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 thisJXCollapsiblePane
relies on the calculation of its preferred size.boolean
boolean
void
remove
(int index) Overriden to redirect call to the content pane.void
Overriden to redirect call to the content panevoid
Overriden to redirect call to the content pane.void
setAnimated
(boolean animated) If true, enables the animation when pane is collapsed/expanded.void
void
setCollapsed
(boolean val) Expands or collapses thisJXCollapsiblePane
.void
setContentPane
(Container contentPanel) Sets the content pane of this JXCollapsiblePane.void
setDirection
(JXCollapsiblePane.Direction direction) Changes the direction of this collapsible pane.void
setLayout
(LayoutManager mgr) Overriden to redirect call to the content pane.void
setMinimumSize
(Dimension minimumSize) Forwards to the content pane.void
setPreferredSize
(Dimension preferredSize) Methods inherited from class org.jdesktop.swingx.JXPanel
getAlpha, getBackgroundPainter, getEffectiveAlpha, getPainterChangeListener, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableHeightHint, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollableWidthHint, isInheritAlpha, isPaintBorderInsets, paint, paintComponent, setAlpha, setBackground, setBackgroundPainter, setInheritAlpha, setPaintBorderInsets, setScrollableHeightHint, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth, setScrollableWidthHint
Methods inherited from class javax.swing.JPanel
getAccessibleContext, 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, 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, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Methods inherited from class java.awt.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, 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, 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, transferFocusUpCycle
-
Field Details
-
ANIMATION_STATE_KEY
Used when generating PropertyChangeEvents for the "animationState" property. The PropertyChangeEvent will takes the following different values forPropertyChangeEvent.getNewValue()
:reinit
every time the animation startsexpanded
when the animation ends and the pane is expandedcollapsed
when the animation ends and the pane is collapsed
- See Also:
-
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:
-
-
Constructor Details
-
JXCollapsiblePane
public JXCollapsiblePane()Constructs a new JXCollapsiblePane with aJXPanel
as content pane and a verticalVerticalLayout
with a gap of 2 pixels as layout manager and a vertical orientation. -
JXCollapsiblePane
Constructs a new JXCollapsiblePane with aJXPanel
as content pane and the specified direction.- Parameters:
direction
- the direction to collapse the container
-
JXCollapsiblePane
Constructs a new JXCollapsiblePane with aJPanel
as content pane and the given LayoutManager and a vertical orientation -
JXCollapsiblePane
Constructs a new JXCollapsiblePane with aJPanel
as content pane and the given LayoutManager and orientation. A vertical orientation enables a verticalVerticalLayout
with a gap of 2 pixels as layout manager. A horizontal orientation enables a horizontalHorizontalLayout
with a gap of 2 pixels as layout manager- Parameters:
direction
- the direction this pane collapseslayout
- of this collapsible pane
-
-
Method Details
-
setContentPane
Sets the content pane of this JXCollapsiblePane. ThecontentPanel
should implementScrollable
and returntrue
fromScrollable.getScrollableTracksViewportHeight()
andScrollable.getScrollableTracksViewportWidth()
. If the content pane fails to do so and aJScrollPane
is added as a child, it is likely that the scroll pane will never correctly size. While it is not strictly necessary to implementScrollable
in 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
-
getContentPane
- Returns:
- the content pane
-
setLayout
Overriden to redirect call to the content pane. -
addImpl
Overriden to redirect call to the content pane. -
remove
Overriden to redirect call to the content pane -
remove
public void remove(int index) Overriden to redirect call to the content pane. -
removeAll
public void removeAll()Overriden to redirect call to the content pane. -
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
JXCollapsiblePane
will 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
JXCollapsiblePane
will 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:
-
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.Direction
for 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
val
is 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
val
is 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.- See Also:
-
getBorder
- Overrides:
getBorder
in classJComponent
-
setBorder
- Overrides:
setBorder
in classJComponent
-
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:
getMinimumSize
in classJComponent
- Returns:
- the preferred size of the component
-
setMinimumSize
Forwards to the content pane.- Overrides:
setMinimumSize
in classJComponent
- Parameters:
minimumSize
- the size to set on the content pane
-
getPreferredSize
The critical part of the animation of thisJXCollapsiblePane
relies 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:
getPreferredSize
in classJComponent
- Returns:
- this component preferred size
-
setPreferredSize
- Overrides:
setPreferredSize
in classJComponent
-