org.jdesktop.swingx
Class JXPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.jdesktop.swingx.JXPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable
Direct Known Subclasses:
AbstractPatternPanel, GradientPreviewPanel, JXCollapsiblePane, JXGlassBox, JXGradientChooser, JXGraph, JXHeader, JXImagePanel, JXImageView, JXLoginPane, JXTaskPaneContainer, JXTipOfTheDay, JXTitledPanel, JXTitledSeparator, SpinningCalendarHeaderHandler.SpinningCalendarHeader, WrappingIconPanel

public class JXPanel
extends javax.swing.JPanel
implements javax.swing.Scrollable

An extended JPanel that provides additional features. First, the component is Scrollable, using reasonable defaults. Second, the component is alpha-channel enabled. This means that the JXPanel can be made fully or partially transparent. Finally, JXPanel has support for painters.

A transparency example, this following code will show the black background of the parent:

 JXPanel panel = new JXPanel();
 panel.add(new JButton("Push Me"));
 panel.setAlpha(.5f);
 
 container.setBackground(Color.BLACK);
 container.add(panel);
 

A painter example, this following code will show how to add a simple painter:

 JXPanel panel = new JXPanel();
 panel.setBackgroundPainter(new PinstripePainter());
 

Author:
rbair
See Also:
Scrollable, Painter, Serialized Form

Nested Class Summary
 
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
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
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
JXPanel()
          Creates a new JXPanel with a double buffer and a flow layout.
JXPanel(boolean isDoubleBuffered)
          Creates a new JXPanel with FlowLayout and the specified buffering strategy.
JXPanel(java.awt.LayoutManager layout)
          Create a new buffered JXPanel with the specified layout manager
JXPanel(java.awt.LayoutManager layout, boolean isDoubleBuffered)
          Creates a new JXPanel with the specified layout manager and buffering strategy.
 
Method Summary
 float getAlpha()
           
 Painter getBackgroundPainter()
          Returns the current background painter.
 float getEffectiveAlpha()
          Unlike other properties, alpha can be set on a component, or on one of its parents.
protected  java.beans.PropertyChangeListener getPainterChangeListener()
           
 java.awt.Dimension getPreferredScrollableViewportSize()
          
 int getScrollableBlockIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
          
protected  ScrollableSizeHint getScrollableHeightHint()
           
 boolean getScrollableTracksViewportHeight()
          
 boolean getScrollableTracksViewportWidth()
          
 int getScrollableUnitIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
          
protected  ScrollableSizeHint getScrollableWidthHint()
           
 boolean isInheritAlpha()
          Returns the state of the panel with respect to inheriting alpha values.
 boolean isPaintBorderInsets()
          Returns true if the background painter should paint where the border is or false if it should only paint inside the border.
 void paint(java.awt.Graphics g)
          Overriden paint method to take into account the alpha setting
protected  void paintComponent(java.awt.Graphics g)
          Overridden to provide Painter support.
 void setAlpha(float alpha)
          Set the alpha transparency level for this component.
 void setBackground(java.awt.Color bg)
          Sets the background color for this component by
 void setBackgroundPainter(Painter p)
          Sets a Painter to use to paint the background of this JXPanel.
 void setInheritAlpha(boolean val)
          Determines if the effective alpha of this component should include the alpha of ancestors.
 void setPaintBorderInsets(boolean paintBorderInsets)
          Sets the paintBorderInsets property.
 void setScrollableHeightHint(ScrollableSizeHint hint)
          Sets the vertical sizing hint.
 void setScrollableTracksViewportHeight(boolean scrollableTracksViewportHeight)
          Sets the vertical size tracking to either ScrollableSizeTrack.FIT or NONE, if the boolean parameter is true or false, respectively.
 void setScrollableTracksViewportWidth(boolean scrollableTracksViewportWidth)
          Sets the horizontal size tracking to either ScrollableSizeTrack.FIT or NONE, if the boolean parameter is true or false, respectively.
 void setScrollableWidthHint(ScrollableSizeHint hint)
          Sets the horizontal sizing hint.
 
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, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, 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, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JXPanel

public JXPanel()
Creates a new JXPanel with a double buffer and a flow layout.


JXPanel

public JXPanel(boolean isDoubleBuffered)
Creates a new JXPanel with FlowLayout and the specified buffering strategy. If isDoubleBuffered is true, the JXPanel will use a double buffer.

Parameters:
isDoubleBuffered - a boolean, true for double-buffering, which uses additional memory space to achieve fast, flicker-free updates

JXPanel

public JXPanel(java.awt.LayoutManager layout)
Create a new buffered JXPanel with the specified layout manager

Parameters:
layout - the LayoutManager to use

JXPanel

public JXPanel(java.awt.LayoutManager layout,
               boolean isDoubleBuffered)
Creates a new JXPanel with the specified layout manager and buffering strategy.

Parameters:
layout - the LayoutManager to use
isDoubleBuffered - a boolean, true for double-buffering, which uses additional memory space to achieve fast, flicker-free updates
Method Detail

setAlpha

public void setAlpha(float alpha)
Set the alpha transparency level for this component. This automatically causes a repaint of the component.

TODO add support for animated changes in translucency

Parameters:
alpha - must be a value between 0 and 1 inclusive.

getAlpha

public float getAlpha()
Returns:
the alpha translucency level for this component. This will be a value between 0 and 1, inclusive.

getEffectiveAlpha

public float getEffectiveAlpha()
Unlike other properties, alpha can be set on a component, or on one of its parents. If the alpha of a parent component is .4, and the alpha on this component is .5, effectively the alpha for this component is .4 because the lowest alpha in the heirarchy "wins"


isInheritAlpha

public boolean isInheritAlpha()
Returns the state of the panel with respect to inheriting alpha values.

Returns:
true if this panel inherits alpha values; false otherwise
See Also:
setInheritAlpha(boolean)

setInheritAlpha

public void setInheritAlpha(boolean val)
Determines if the effective alpha of this component should include the alpha of ancestors.

Parameters:
val - true to include ancestral alpha data; false otherwise
See Also:
isInheritAlpha(), getEffectiveAlpha()

setScrollableWidthHint

public final void setScrollableWidthHint(ScrollableSizeHint hint)
Sets the horizontal sizing hint. The hint is used by the Scrollable implementation to service the getScrollableTracksWidth.

Parameters:
hint - the horizontal sizing hint, must not be null and must be vertical.
Throws:
java.lang.IllegalArgumentException - if track not horizontal
java.lang.NullPointerException - if null
See Also:
setScrollableHeightHint(ScrollableSizeHint), ScrollableSizeHint

setScrollableHeightHint

public final void setScrollableHeightHint(ScrollableSizeHint hint)
Sets the vertical sizing hint. The hint is used by the Scrollable implementation to service the getScrollableTracksHeight.

Parameters:
hint - the vertical sizing hint, must not be null and must be vertical.
Throws:
java.lang.IllegalArgumentException - if track not vertical
java.lang.NullPointerException - if null
See Also:
setScrollableWidthHint(ScrollableSizeHint), ScrollableSizeHint

getScrollableWidthHint

protected ScrollableSizeHint getScrollableWidthHint()

getScrollableHeightHint

protected ScrollableSizeHint getScrollableHeightHint()

getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()

Specified by:
getScrollableTracksViewportHeight in interface javax.swing.Scrollable

getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()

Specified by:
getScrollableTracksViewportWidth in interface javax.swing.Scrollable

getPreferredScrollableViewportSize

public java.awt.Dimension getPreferredScrollableViewportSize()

Specified by:
getPreferredScrollableViewportSize in interface javax.swing.Scrollable

getScrollableBlockIncrement

public int getScrollableBlockIncrement(java.awt.Rectangle visibleRect,
                                       int orientation,
                                       int direction)

Specified by:
getScrollableBlockIncrement in interface javax.swing.Scrollable

getScrollableUnitIncrement

public int getScrollableUnitIncrement(java.awt.Rectangle visibleRect,
                                      int orientation,
                                      int direction)

Specified by:
getScrollableUnitIncrement in interface javax.swing.Scrollable

setScrollableTracksViewportHeight

public void setScrollableTracksViewportHeight(boolean scrollableTracksViewportHeight)
Sets the vertical size tracking to either ScrollableSizeTrack.FIT or NONE, if the boolean parameter is true or false, respectively.

NOTE: this method is kept for backward compatibility only, for full control use setScrollableHeightHint.

Parameters:
scrollableTracksViewportHeight - The scrollableTracksViewportHeight to set.
See Also:
setScrollableHeightHint(ScrollableSizeHint)

setScrollableTracksViewportWidth

public void setScrollableTracksViewportWidth(boolean scrollableTracksViewportWidth)
Sets the horizontal size tracking to either ScrollableSizeTrack.FIT or NONE, if the boolean parameter is true or false, respectively.

NOTE: this method is kept for backward compatibility only, for full control use setScrollableWidthHint.

Parameters:
scrollableTracksViewportWidth - The scrollableTracksViewportWidth to set.
See Also:
setScrollableWidthHint(ScrollableSizeHint)

setBackground

public void setBackground(java.awt.Color bg)
Sets the background color for this component by

Overrides:
setBackground in class javax.swing.JComponent
Parameters:
bg - the desired background Color
See Also:
java.swing.JComponent#getBackground, JComponent.setOpaque(boolean)

setBackgroundPainter

public void setBackgroundPainter(Painter p)
Sets a Painter to use to paint the background of this JXPanel.

Parameters:
p - the new painter
See Also:
getBackgroundPainter()

getPainterChangeListener

protected java.beans.PropertyChangeListener getPainterChangeListener()
Returns:

getBackgroundPainter

public Painter getBackgroundPainter()
Returns the current background painter. The default value of this property is a painter which draws the normal JPanel background according to the current look and feel.

Returns:
the current painter
See Also:
setBackgroundPainter(Painter), isPaintBorderInsets()

isPaintBorderInsets

public boolean isPaintBorderInsets()
Returns true if the background painter should paint where the border is or false if it should only paint inside the border. This property is true by default. This property affects the width, height, and initial transform passed to the background painter.


setPaintBorderInsets

public void setPaintBorderInsets(boolean paintBorderInsets)
Sets the paintBorderInsets property. Set to true if the background painter should paint where the border is or false if it should only paint inside the border. This property is true by default. This property affects the width, height, and initial transform passed to the background painter. This is a bound property.


paint

public void paint(java.awt.Graphics g)
Overriden paint method to take into account the alpha setting

Overrides:
paint in class javax.swing.JComponent
Parameters:
g -

paintComponent

protected void paintComponent(java.awt.Graphics g)
Overridden to provide Painter support. It will call backgroundPainter.paint() if it is not null, else it will call super.paintComponent().

Overrides:
paintComponent in class javax.swing.JComponent