Class JXCollapsiblePane
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.jdesktop.swingx.JXPanel
-
- org.jdesktop.swingx.JXCollapsiblePane
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,javax.accessibility.Accessible,javax.swing.Scrollable
public class JXCollapsiblePane extends JXPanel
JXCollapsiblePaneprovides 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
JXCollapsiblePanehas 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.
For convenience, the// to set the font collapsiblePane.getContentPane().setFont(font); // to set the background color collapsiblePane.getContentPane().setBackground(Color.RED);addandremovemethods forward to the content pane. The following code shows to ways to add a child to the content pane.
To set the content pane, do not use// to add a child collapsiblePane.getContentPane().add(component); // to add a child collapsiblePane.add(component);add, usesetContentPane(Container).In this example, the
JXCollapsiblePaneis 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
JXCollapsiblePanehas a default toggle action registered under the nameTOGGLE_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 theEXPAND_ICONandCOLLAPSE_ICONproperties 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:
JXCollapsiblePanerequires its parent container to have aLayoutManagerusinggetPreferredSize()when calculating its layout (exampleVerticalLayout,BorderLayout).- Author:
- rbair (from the JDNC project), Frederic Lavigne, Karl George Schaefer
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceJXCollapsiblePane.CollapsiblePaneContainerTagging interface for containers in a JXCollapsiblePane hierarchy who needs to be revalidated (invalidate/validate/repaint) when the pane is expanding or collapsing.static classJXCollapsiblePane.DirectionThe direction defines how the collapsible pane will collapse.-
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
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringANIMATION_STATE_KEYUsed when generating PropertyChangeEvents for the "animationState" property.static java.lang.StringCOLLAPSE_ICONThe icon used by the "toggle" action when the JXCollapsiblePane is expanded, i.e the icon which indicates the pane can be collapsed.static java.lang.StringEXPAND_ICONThe icon used by the "toggle" action when the JXCollapsiblePane is collapsed, i.e the icon which indicates the pane can be expanded.static java.lang.StringTOGGLE_ACTIONJXCollapsible 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
-
-
Constructor Summary
Constructors Constructor Description 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(java.awt.LayoutManager layout)Constructs a new JXCollapsiblePane with aJPanelas content pane and the given LayoutManager and a vertical orientationJXCollapsiblePane(JXCollapsiblePane.Direction direction)Constructs a new JXCollapsiblePane with aJXPanelas content pane and the specified direction.JXCollapsiblePane(JXCollapsiblePane.Direction direction, java.awt.LayoutManager layout)Constructs a new JXCollapsiblePane with aJPanelas content pane and the given LayoutManager and orientation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddImpl(java.awt.Component comp, java.lang.Object constraints, int index)Overriden to redirect call to the content pane.javax.swing.border.BordergetBorder()java.awt.ContainergetContentPane()JXCollapsiblePane.DirectiongetDirection()java.awt.DimensiongetMinimumSize()A collapsible pane always returns its preferred size for the minimum size to ensure that the collapsing happens correctly.java.awt.DimensiongetPreferredSize()The critical part of the animation of thisJXCollapsiblePanerelies on the calculation of its preferred size.booleanisAnimated()booleanisCollapsed()voidremove(int index)Overriden to redirect call to the content pane.voidremove(java.awt.Component comp)Overriden to redirect call to the content panevoidremoveAll()Overriden to redirect call to the content pane.voidsetAnimated(boolean animated)If true, enables the animation when pane is collapsed/expanded.voidsetBorder(javax.swing.border.Border border)voidsetCollapsed(boolean val)Expands or collapses thisJXCollapsiblePane.voidsetContentPane(java.awt.Container contentPanel)Sets the content pane of this JXCollapsiblePane.voidsetDirection(JXCollapsiblePane.Direction direction)Changes the direction of this collapsible pane.voidsetLayout(java.awt.LayoutManager mgr)Overriden to redirect call to the content pane.voidsetMinimumSize(java.awt.Dimension minimumSize)Forwards to the content pane.voidsetPreferredSize(java.awt.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, 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
-
-
-
-
Field Detail
-
ANIMATION_STATE_KEY
public static final java.lang.String ANIMATION_STATE_KEY
Used when generating PropertyChangeEvents for the "animationState" property. The PropertyChangeEvent will takes the following different values forPropertyChangeEvent.getNewValue():reinitevery time the animation startsexpandedwhen the animation ends and the pane is expandedcollapsedwhen the animation ends and the pane is collapsed
- See Also:
- Constant Field Values
-
TOGGLE_ACTION
public static final java.lang.String 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:
- Constant Field Values
-
COLLAPSE_ICON
public static final java.lang.String 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:
- Constant Field Values
-
EXPAND_ICON
public static final java.lang.String 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:
- Constant Field Values
-
-
Constructor Detail
-
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
public JXCollapsiblePane(JXCollapsiblePane.Direction direction)
Constructs a new JXCollapsiblePane with aJXPanelas content pane and the specified direction.- Parameters:
direction- the direction to collapse the container
-
JXCollapsiblePane
public JXCollapsiblePane(java.awt.LayoutManager layout)
Constructs a new JXCollapsiblePane with aJPanelas content pane and the given LayoutManager and a vertical orientation
-
JXCollapsiblePane
public JXCollapsiblePane(JXCollapsiblePane.Direction direction, java.awt.LayoutManager layout)
Constructs a new JXCollapsiblePane with aJPanelas content pane and the given LayoutManager and orientation. A vertical orientation enables a verticalVerticalLayoutwith a gap of 2 pixels as layout manager. A horizontal orientation enables a horizontalHorizontalLayoutwith a gap of 2 pixels as layout manager- Parameters:
direction- the direction this pane collapseslayout- of this collapsible pane
-
-
Method Detail
-
setContentPane
public void setContentPane(java.awt.Container contentPanel)
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:
java.lang.IllegalArgumentException- if contentPanel is null
-
getContentPane
public java.awt.Container getContentPane()
- Returns:
- the content pane
-
setLayout
public void setLayout(java.awt.LayoutManager mgr)
Overriden to redirect call to the content pane.- Overrides:
setLayoutin classjava.awt.Container
-
addImpl
protected void addImpl(java.awt.Component comp, java.lang.Object constraints, int index)Overriden to redirect call to the content pane.- Overrides:
addImplin classjava.awt.Container
-
remove
public void remove(java.awt.Component comp)
Overriden to redirect call to the content pane- Overrides:
removein classjava.awt.Container
-
remove
public void remove(int index)
Overriden to redirect call to the content pane.- Overrides:
removein classjava.awt.Container
-
removeAll
public void removeAll()
Overriden to redirect call to the content pane.- Overrides:
removeAllin classjava.awt.Container
-
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:
setAnimated(boolean)
-
setDirection
public void setDirection(JXCollapsiblePane.Direction direction)
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:
java.lang.IllegalStateException- when this method is called while a collapsing/restore operation is running- See Also:
getDirection()
-
getDirection
public JXCollapsiblePane.Direction getDirection()
- Returns:
- the current
JXCollapsiblePane.Direction. - See Also:
setDirection(Direction)
-
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.- See Also:
isAnimated(),setAnimated(boolean)
-
getBorder
public javax.swing.border.Border getBorder()
- Overrides:
getBorderin classjavax.swing.JComponent
-
setBorder
public void setBorder(javax.swing.border.Border border)
- Overrides:
setBorderin classjavax.swing.JComponent
-
getMinimumSize
public java.awt.Dimension 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 classjavax.swing.JComponent- Returns:
- the preferred size of the component
-
setMinimumSize
public void setMinimumSize(java.awt.Dimension minimumSize)
Forwards to the content pane.- Overrides:
setMinimumSizein classjavax.swing.JComponent- Parameters:
minimumSize- the size to set on the content pane
-
getPreferredSize
public java.awt.Dimension 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 classjavax.swing.JComponent- Returns:
- this component preferred size
-
setPreferredSize
public void setPreferredSize(java.awt.Dimension preferredSize)
- Overrides:
setPreferredSizein classjavax.swing.JComponent
-
-