Class JXPanel

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, 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 JPanel implements AlphaPaintable, BackgroundPaintable, Scrollable

An extended JPanel that provides additional features.

Scrollable

JXPanel is Scrollable by default. It provides reasonable implementations of all of the interface methods. In addition, it supports the setting of common scrolling approaches defined in ScrollableSizeHint.

Alpha Support

JXPanel has full alpha-channel support. This means that the JXPanel 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:
  • Field Details

    • 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 PropertyChangeListener painterChangeListener
      The listener installed on the current backgroundPainter, if any.
    • fakeTransparent

      boolean fakeTransparent
    • LOG

      private static final Logger LOG
  • Constructor Details

    • 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(LayoutManager layout)
      Create a new buffered JXPanel with the specified layout manager
      Parameters:
      layout - the LayoutManager to use
    • JXPanel

      public JXPanel(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 Details

    • 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 a JPanel that is non-opaque.

      Overrides:
      setOpaque in class JComponent
    • isOpaque

      public boolean isOpaque()
      Overrides:
      isOpaque in class JComponent
    • getAlpha

      public float getAlpha()
      Get the current alpha value.
      Specified by:
      getAlpha in interface AlphaPaintable
      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 interface AlphaPaintable
      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 interface AlphaPaintable
      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 interface AlphaPaintable
      Returns:
      true if this panel inherits alpha values; false otherwise
      See Also:
    • setInheritAlpha

      public void setInheritAlpha(boolean val)
      Determines if the effective alpha of this component should include the alpha of ancestors.
      Specified by:
      setInheritAlpha in interface AlphaPaintable
      Parameters:
      val - true to include ancestral alpha data; false otherwise
      See Also:
    • 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:
      NullPointerException - if null
      See Also:
    • 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:
      NullPointerException - if null
      See Also:
    • getScrollableWidthHint

      protected ScrollableSizeHint getScrollableWidthHint()
    • getScrollableHeightHint

      protected ScrollableSizeHint getScrollableHeightHint()
    • getScrollableTracksViewportHeight

      public boolean getScrollableTracksViewportHeight()
      Specified by:
      getScrollableTracksViewportHeight in interface Scrollable
    • getScrollableTracksViewportWidth

      public boolean getScrollableTracksViewportWidth()
      Specified by:
      getScrollableTracksViewportWidth in interface Scrollable
    • getPreferredScrollableViewportSize

      public Dimension getPreferredScrollableViewportSize()
      Specified by:
      getPreferredScrollableViewportSize in interface Scrollable
    • getScrollableBlockIncrement

      public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
      Specified by:
      getScrollableBlockIncrement in interface Scrollable
    • getScrollableUnitIncrement

      public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
      Specified by:
      getScrollableUnitIncrement in interface 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:
    • 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:
    • setBackgroundPainter

      public void setBackgroundPainter(Painter p)
      Sets a Painter to use to paint the background of this JXPanel.
      Specified by:
      setBackgroundPainter in interface BackgroundPaintable
      Parameters:
      p - the new painter
      See Also:
    • getPainterChangeListener

      protected 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 interface BackgroundPaintable
      Returns:
      the current painter
      See Also:
    • 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 interface BackgroundPaintable
      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 interface BackgroundPaintable
      Parameters:
      paintBorderInsets -
    • isPaintingOrigin

      protected boolean isPaintingOrigin()
      Overrides:
      isPaintingOrigin in class JComponent
    • paint

      public void paint(Graphics g)
      Overridden paint method to take into account the alpha setting.
      Overrides:
      paint in class JComponent
      Parameters:
      g - the Graphics context in which to paint
    • paintComponent

      protected void paintComponent(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 JComponent
      Parameters:
      g - the Graphics context in which to paint
    • isPatch

      protected boolean isPatch()
    • paintComponentPatch

      protected void paintComponentPatch(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: