org.bdgp.swing
Class BackgroundImagePanel

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--org.bdgp.swing.BackgroundImagePanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class BackgroundImagePanel
extends javax.swing.JPanel
implements java.awt.image.ImageObserver

Implementation of JPanel that allows the background to be set to an image. The BackgroundImagePanel can be set up to resize the background image to fit the panel by calling setScaleImage(boolean). If no background image is set, the panel is transparent.

See Also:
Serialized Form

Inner classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Field Summary
protected  java.awt.Image backgroundImage
           
protected  boolean scaleImage
           
protected  java.awt.Image tempImage
           
protected  java.awt.Image workingImage
           
 
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
BackgroundImagePanel()
          Constructs a BackgroundImagePanel with no image and with scaling turned off.
BackgroundImagePanel(boolean scale)
          Constructs a BackgroundImagePanel with no image specified.
BackgroundImagePanel(java.awt.Image image)
          Constructs a BackgroundImagePanel using the specified Image object as the background.
BackgroundImagePanel(java.awt.Image image, boolean scale)
          Constructs a BackgroundImagePanel using the specified Image object as the background.
BackgroundImagePanel(java.lang.String imagePath)
          Constructs a BackgroundImagePanel using the image at the given path on the local filesystem.
BackgroundImagePanel(java.lang.String imagePath, boolean scale)
          Constructs a BackgroundImagePanel using the image at the given path on the local filesystem.
BackgroundImagePanel(java.net.URL imagePath)
          Constructs a BackgroundImagePanel using the image at the given URL.
BackgroundImagePanel(java.net.URL imagePath, boolean scale)
          Constructs a BackgroundImagePanel using the image at the given URL.
 
Method Summary
 void paint(java.awt.Graphics g)
           
protected  void resizeImage()
          Forces the background image cache to be recalculated.
 void setBackground(java.awt.Image image)
          Sets the background image to the given Image.
 void setBackground(java.lang.String filename)
          Sets the background image to the image at the given path on the local filesystem.
 void setBackground(java.net.URL filename)
          Sets the background image to the image at the given URL.
 void setBounds(int x, int y, int width, int height)
           
 void setBounds(java.awt.Rectangle r)
           
 void setScaleImage(boolean scale)
          Enable/disable scaling of the background image.
 void setSize(java.awt.Dimension d)
           
 void setSize(int width, int height)
           
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUIClassID, paramString, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.image.ImageObserver
imageUpdate
 

Field Detail

backgroundImage

protected java.awt.Image backgroundImage

workingImage

protected volatile java.awt.Image workingImage

tempImage

protected java.awt.Image tempImage

scaleImage

protected boolean scaleImage
Constructor Detail

BackgroundImagePanel

public BackgroundImagePanel()
Constructs a BackgroundImagePanel with no image and with scaling turned off. Same as calling BackgroundImagePanel(false).

BackgroundImagePanel

public BackgroundImagePanel(boolean scale)
Constructs a BackgroundImagePanel with no image specified.
Parameters:
scale - whether or not to scale the background image

BackgroundImagePanel

public BackgroundImagePanel(java.awt.Image image)
Constructs a BackgroundImagePanel using the specified Image object as the background. Scaling is disabled.
Parameters:
image - the background image

BackgroundImagePanel

public BackgroundImagePanel(java.lang.String imagePath)
Constructs a BackgroundImagePanel using the image at the given path on the local filesystem. Scaling is disabled.
Parameters:
imagePath - path to the background image

BackgroundImagePanel

public BackgroundImagePanel(java.net.URL imagePath)
Constructs a BackgroundImagePanel using the image at the given URL. Scaling is disabled. See setBackground(URL) for possible performance issues with this method.
Parameters:
URL - path to the background image

BackgroundImagePanel

public BackgroundImagePanel(java.awt.Image image,
                            boolean scale)
Constructs a BackgroundImagePanel using the specified Image object as the background.
Parameters:
image - the background image
scale - whether or not to scale the background image

BackgroundImagePanel

public BackgroundImagePanel(java.lang.String imagePath,
                            boolean scale)
Constructs a BackgroundImagePanel using the image at the given path on the local filesystem.
Parameters:
imagePath - path to the background image
scale - whether or not to scale the background image

BackgroundImagePanel

public BackgroundImagePanel(java.net.URL imagePath,
                            boolean scale)
Constructs a BackgroundImagePanel using the image at the given URL. See setBackground(URL) for possible performance issues with this method.
Parameters:
imagePath - path to the background image
scale - whether or not to scale the background image
Method Detail

setScaleImage

public void setScaleImage(boolean scale)
Enable/disable scaling of the background image.
Parameters:
scale - whether or not to scale the background image

setBackground

public void setBackground(java.lang.String filename)
Sets the background image to the image at the given path on the local filesystem. If the file cannot be found, the background image is not set.
Parameters:
filename - path to the new background image

setBackground

public void setBackground(java.net.URL filename)
Sets the background image to the image at the given URL. If the file cannot be found, the background image is not set. In order to guarantee that the image is displayed, all the setBackground() methods stall the current thread until the image is fully loaded. This can really slow down GUI initialization if you are loading an image over a slow network. If you'd prefer a more elegant solution to the image loading problem than just blocking, you should load the image yourself and then call setBackground(Image)
Parameters:
filename - URL of the new background image

setBackground

public void setBackground(java.awt.Image image)
Sets the background image to the given Image.
Parameters:
image - the new background image

resizeImage

protected void resizeImage()
Forces the background image cache to be recalculated. This is called whenever the panel is resized.

setSize

public void setSize(int width,
                    int height)
Overrides:
setSize in class java.awt.Component

setSize

public void setSize(java.awt.Dimension d)
Overrides:
setSize in class java.awt.Component

setBounds

public void setBounds(java.awt.Rectangle r)
Overrides:
setBounds in class java.awt.Component

setBounds

public void setBounds(int x,
                      int y,
                      int width,
                      int height)
Overrides:
setBounds in class java.awt.Component

paint

public void paint(java.awt.Graphics g)
Overrides:
paint in class javax.swing.JComponent