Class JXPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.jdesktop.swingx.JXPanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.Scrollable
,AlphaPaintable
,BackgroundPaintable
- Direct Known Subclasses:
AbstractPatternPanel
,BasicCalendarHeaderHandler.BasicCalendarHeader
,GradientPreviewPanel
,JXCollapsiblePane
,JXDatePicker.TodayPanel
,JXGradientChooser
,JXGraph
,JXHeader
,JXImagePanel
,JXImageView
,JXLoginPane
,JXLoginPane.JXBtnPanel
,JXTaskPaneContainer
,JXTipOfTheDay
,JXTitledPanel
,JXTitledSeparator
,SpinningCalendarHeaderHandler.SpinningCalendarHeader
,WrappingIconPanel
@JavaBean public class JXPanel extends javax.swing.JPanel implements AlphaPaintable, BackgroundPaintable, javax.swing.Scrollable
An extended
JPanel
that provides additional features.Scrollable
JXPanel
isScrollable
by default. It provides reasonable implementations of all of the interface methods. In addition, it supports the setting of common scrolling approaches defined inScrollableSizeHint
.Alpha Support
JXPanel
has full alpha-channel support. This means that theJXPanel
can be made fully or partially transparent. This means that the JXPanel and all of its children will behave as a single paint at the specified alpha value. Cauton: best practice is to use either alpha support or opacity support, but not both. See the documentation on the methods for further information.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);
Painter Support
JXPanel
has support for Painters.A painter example, this following code will show how to add a simple painter:
JXPanel panel = new JXPanel(); panel.setBackgroundPainter(new PinstripePainter());
- 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
-
-
Field Summary
Fields Modifier and Type Field Description private float
alpha
The alpha level for this component.private Painter
backgroundPainter
Specifies the Painter to use for painting the background of this panel.(package private) boolean
fakeTransparent
private boolean
inheritAlpha
Indicates whether this component should inherit its parent alpha valueprivate static java.util.logging.Logger
LOG
private float
oldAlpha
private boolean
oldOpaque
If the old alpha value was 1.0, I keep track of the opaque setting because a translucent component is not opaque, but I want to be able to restore opacity to its default setting if the alpha is 1.0.private boolean
paintBorderInsets
private java.beans.PropertyChangeListener
painterChangeListener
The listener installed on the current backgroundPainter, if any.private ScrollableSizeHint
scrollableHeightHint
private ScrollableSizeHint
scrollableWidthHint
-
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 JXPanel()
Creates a newJXPanel
with a double buffer and a flow layout.JXPanel(boolean isDoubleBuffered)
Creates a newJXPanel
withFlowLayout
and the specified buffering strategy.JXPanel(java.awt.LayoutManager layout)
Create a new buffered JXPanel with the specified layout managerJXPanel(java.awt.LayoutManager layout, boolean isDoubleBuffered)
Creates a new JXPanel with the specified layout manager and buffering strategy.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description float
getAlpha()
Get the current alpha value.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()
(package private) void
installRepaintManager()
protected boolean
isAlpha()
Returns whether or not the container hierarchy below is transparent.boolean
isInheritAlpha()
Returns the state of the panel with respect to inheriting alpha values.boolean
isOpaque()
protected boolean
isOpaquePatch()
boolean
isPaintBorderInsets()
Returns true if the background painter should paint where the border is or false if it should only paint inside the border.protected boolean
isPaintingBackground()
Returns whether or not the background should be painted.protected boolean
isPaintingOrigin()
protected boolean
isPatch()
protected boolean
isTransparentBackground()
Returns whether or not the background is transparent.void
paint(java.awt.Graphics g)
Overridden paint method to take into account the alpha setting.protected void
paintComponent(java.awt.Graphics g)
Overridden to provide Painter support.protected void
paintComponentPatch(java.awt.Graphics g)
void
setAlpha(float alpha)
Set the alpha transparency level for this component.private void
setAlphaPatch(float alpha)
experimental version: doesn't tweak opaque called if isPatchvoid
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
setOpaque(boolean opaque)
protected void
setOpaquePatch(boolean opaque)
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.(package private) void
uninstallRepaintManager()
-
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, 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, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, 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
-
-
-
-
Field Detail
-
scrollableWidthHint
private ScrollableSizeHint scrollableWidthHint
-
scrollableHeightHint
private ScrollableSizeHint scrollableHeightHint
-
alpha
private volatile float alpha
The alpha level for this component.
-
oldOpaque
private boolean oldOpaque
If the old alpha value was 1.0, I keep track of the opaque setting because a translucent component is not opaque, but I want to be able to restore opacity to its default setting if the alpha is 1.0. Honestly, I don't know if this is necessary or not, but it sounded good on paper :)TODO: Check whether this variable is necessary or not
-
oldAlpha
private float oldAlpha
-
inheritAlpha
private boolean inheritAlpha
Indicates whether this component should inherit its parent alpha value
-
backgroundPainter
private Painter backgroundPainter
Specifies the Painter to use for painting the background of this panel. If no painter is specified, the normal painting routine for JPanel is called. Old behavior is also honored for the time being if no backgroundPainter is specified
-
paintBorderInsets
private boolean paintBorderInsets
-
painterChangeListener
private java.beans.PropertyChangeListener painterChangeListener
The listener installed on the current backgroundPainter, if any.
-
fakeTransparent
boolean fakeTransparent
-
LOG
private static final java.util.logging.Logger LOG
-
-
Constructor Detail
-
JXPanel
public JXPanel()
Creates a newJXPanel
with a double buffer and a flow layout.
-
JXPanel
public JXPanel(boolean isDoubleBuffered)
Creates a newJXPanel
withFlowLayout
and the specified buffering strategy. IfisDoubleBuffered
is true, theJXPanel
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 useisDoubleBuffered
- a boolean, true for double-buffering, which uses additional memory space to achieve fast, flicker-free updates
-
-
Method Detail
-
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 aJPanel
that is non-opaque.- Overrides:
setOpaque
in classjavax.swing.JComponent
-
isOpaque
public boolean isOpaque()
- Overrides:
isOpaque
in classjavax.swing.JComponent
-
getAlpha
public float getAlpha()
Get the current alpha value.- Specified by:
getAlpha
in interfaceAlphaPaintable
- Returns:
- the alpha translucency level for this component. This will be a value between 0 and 1, inclusive.
-
setAlpha
public void setAlpha(float alpha)
Set the alpha transparency level for this component. This automatically causes a repaint of the component.- Specified by:
setAlpha
in interfaceAlphaPaintable
- Parameters:
alpha
- must be a value between 0 and 1 inclusive
-
setAlphaPatch
private void setAlphaPatch(float alpha)
experimental version: doesn't tweak opaque called if isPatch- Parameters:
alpha
-
-
installRepaintManager
void installRepaintManager()
-
uninstallRepaintManager
void uninstallRepaintManager()
-
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 hierarchy "wins."- Specified by:
getEffectiveAlpha
in interfaceAlphaPaintable
- Returns:
- the lowest alpha value in the hierarchy
-
isInheritAlpha
public boolean isInheritAlpha()
Returns the state of the panel with respect to inheriting alpha values.- Specified by:
isInheritAlpha
in interfaceAlphaPaintable
- Returns:
true
if this panel inherits alpha values;false
otherwise- See Also:
AlphaPaintable.setInheritAlpha(boolean)
-
setInheritAlpha
public void setInheritAlpha(boolean val)
Determines if the effective alpha of this component should include the alpha of ancestors.- Specified by:
setInheritAlpha
in interfaceAlphaPaintable
- Parameters:
val
-true
to include ancestral alpha data;false
otherwise- See Also:
AlphaPaintable.isInheritAlpha()
,AlphaPaintable.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.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.NullPointerException
- if null- See Also:
setScrollableWidthHint(ScrollableSizeHint)
,ScrollableSizeHint
-
getScrollableWidthHint
protected ScrollableSizeHint getScrollableWidthHint()
-
getScrollableHeightHint
protected ScrollableSizeHint getScrollableHeightHint()
-
getScrollableTracksViewportHeight
public boolean getScrollableTracksViewportHeight()
- Specified by:
getScrollableTracksViewportHeight
in interfacejavax.swing.Scrollable
-
getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportWidth()
- Specified by:
getScrollableTracksViewportWidth
in interfacejavax.swing.Scrollable
-
getPreferredScrollableViewportSize
public java.awt.Dimension getPreferredScrollableViewportSize()
- Specified by:
getPreferredScrollableViewportSize
in interfacejavax.swing.Scrollable
-
getScrollableBlockIncrement
public int getScrollableBlockIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
- Specified by:
getScrollableBlockIncrement
in interfacejavax.swing.Scrollable
-
getScrollableUnitIncrement
public int getScrollableUnitIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
- Specified by:
getScrollableUnitIncrement
in interfacejavax.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)
-
setBackgroundPainter
public void setBackgroundPainter(Painter p)
Sets a Painter to use to paint the background of this JXPanel.- Specified by:
setBackgroundPainter
in interfaceBackgroundPaintable
- Parameters:
p
- the new painter- See Also:
getBackgroundPainter()
-
getPainterChangeListener
protected java.beans.PropertyChangeListener getPainterChangeListener()
- Returns:
- a listener for painter change events
-
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.- Specified by:
getBackgroundPainter
in interfaceBackgroundPaintable
- 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.- Specified by:
isPaintBorderInsets
in interfaceBackgroundPaintable
- Returns:
true
to paint under the border;false
otherwise
-
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.- Specified by:
setPaintBorderInsets
in interfaceBackgroundPaintable
-
isPaintingOrigin
protected boolean isPaintingOrigin()
- Overrides:
isPaintingOrigin
in classjavax.swing.JComponent
-
paint
public void paint(java.awt.Graphics g)
Overridden paint method to take into account the alpha setting.- Overrides:
paint
in classjavax.swing.JComponent
- Parameters:
g
- theGraphics
context in which to paint
-
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 classjavax.swing.JComponent
- Parameters:
g
- theGraphics
context in which to paint
-
isPatch
protected boolean isPatch()
-
paintComponentPatch
protected void paintComponentPatch(java.awt.Graphics g)
-
isOpaquePatch
protected boolean isOpaquePatch()
-
setOpaquePatch
protected void setOpaquePatch(boolean opaque)
-
isAlpha
protected boolean isAlpha()
Returns whether or not the container hierarchy below is transparent.- Returns:
-
isTransparentBackground
protected boolean isTransparentBackground()
Returns whether or not the background is transparent.- Returns:
-
isPaintingBackground
protected boolean isPaintingBackground()
Returns whether or not the background should be painted.- Returns:
-
-