Bartosz Firyn (SarXos)

com.github.sarxos.webcam
Class WebcamPanel

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 com.github.sarxos.webcam.WebcamPanel
All Implemented Interfaces:
WebcamListener, ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible

public class WebcamPanel
extends JPanel
implements WebcamListener, PropertyChangeListener

Simply implementation of JPanel allowing users to render pictures taken with webcam.

Author:
Bartosz Firyn (SarXos)
See Also:
Serialized Form

Nested Class Summary
 class WebcamPanel.DefaultPainter
          Default painter used to draw image in panel.
static interface WebcamPanel.Painter
          Interface of the painter used to draw image in panel.
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
Component.BaselineResizeBehavior
 
Field Summary
static double MIN_FREQUENCY
          Minimum FPS frequency.
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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
WebcamPanel(Webcam webcam)
          Creates webcam panel and automatically start webcam.
WebcamPanel(Webcam webcam, boolean start)
          Creates new webcam panel which display image from camera in you your Swing application.
WebcamPanel(Webcam webcam, Dimension size, boolean start)
          Creates new webcam panel which display image from camera in you your Swing application.
 
Method Summary
 double getFPS()
          Get rendering frequency in FPS (equivalent to Hz).
 WebcamPanel.Painter getPainter()
          Get painter used to draw image in webcam panel.
 boolean isFillArea()
          Get value of fill area setting.
 boolean isFPSDisplayed()
           
 boolean isFPSLimited()
          Is frequency limit enabled?
 boolean isStarting()
          Is webcam starting.
 void pause()
          Pause rendering.
 void propertyChange(PropertyChangeEvent evt)
           
 void resume()
          Resume rendering.
 void setFillArea(boolean fillArea)
          Image will be resized to fill panel area if true.
 void setFPS(double frequency)
          Set rendering frequency (in Hz or FPS).
 void setFPSDisplayed(boolean displayed)
           
 void setFPSLimited(boolean frequencyLimit)
          Enable or disable frequency limit.
 void setPainter(WebcamPanel.Painter painter)
          Set new painter.
 void start()
          Open webcam and start rendering.
 void stop()
          Stop rendering and close webcam.
 void webcamClosed(WebcamEvent we)
          Webcam has been closed
 void webcamDisposed(WebcamEvent we)
          Webcam has been disposed
 void webcamImageObtained(WebcamEvent we)
          Webcam image has been obtained.
 void webcamOpen(WebcamEvent we)
          Webcam has been open.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, 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, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, 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, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, 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, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MIN_FREQUENCY

public static final double MIN_FREQUENCY
Minimum FPS frequency.

See Also:
Constant Field Values
Constructor Detail

WebcamPanel

public WebcamPanel(Webcam webcam)
Creates webcam panel and automatically start webcam.

Parameters:
webcam - the webcam to be used to fetch images

WebcamPanel

public WebcamPanel(Webcam webcam,
                   boolean start)
Creates new webcam panel which display image from camera in you your Swing application.

Parameters:
webcam - the webcam to be used to fetch images
start - true if webcam shall be automatically started

WebcamPanel

public WebcamPanel(Webcam webcam,
                   Dimension size,
                   boolean start)
Creates new webcam panel which display image from camera in you your Swing application. If panel size argument is null, then image size will be used. If you would like to fill panel area with image even if its size is different, then you can use setFillArea(boolean) method to configure this.

Parameters:
webcam - the webcam to be used to fetch images
size - the size of panel
start - true if webcam shall be automatically started
See Also:
setFillArea(boolean)
Method Detail

setPainter

public void setPainter(WebcamPanel.Painter painter)
Set new painter. Painter is a class which pains image visible when

Parameters:
painter - the painter object to be set

getPainter

public WebcamPanel.Painter getPainter()
Get painter used to draw image in webcam panel.

Returns:
Painter object

webcamOpen

public void webcamOpen(WebcamEvent we)
Description copied from interface: WebcamListener
Webcam has been open.

Specified by:
webcamOpen in interface WebcamListener
Parameters:
we - a webcam event

webcamClosed

public void webcamClosed(WebcamEvent we)
Description copied from interface: WebcamListener
Webcam has been closed

Specified by:
webcamClosed in interface WebcamListener
Parameters:
we - a webcam event

webcamDisposed

public void webcamDisposed(WebcamEvent we)
Description copied from interface: WebcamListener
Webcam has been disposed

Specified by:
webcamDisposed in interface WebcamListener
Parameters:
we - a webcam event

webcamImageObtained

public void webcamImageObtained(WebcamEvent we)
Description copied from interface: WebcamListener
Webcam image has been obtained.

Specified by:
webcamImageObtained in interface WebcamListener
Parameters:
we - a webcam event

start

public void start()
Open webcam and start rendering.


stop

public void stop()
Stop rendering and close webcam.


pause

public void pause()
Pause rendering.


resume

public void resume()
Resume rendering.


isFPSLimited

public boolean isFPSLimited()
Is frequency limit enabled?

Returns:
True or false

setFPSLimited

public void setFPSLimited(boolean frequencyLimit)
Enable or disable frequency limit. Frequency limit should be used for all IP cameras working in pull mode (to save number of HTTP requests). If true, images will be fetched in configured time intervals. If false, images will be fetched as fast as camera can serve them.

Parameters:
frequencyLimit -

getFPS

public double getFPS()
Get rendering frequency in FPS (equivalent to Hz).

Returns:
Rendering frequency

setFPS

public void setFPS(double frequency)
Set rendering frequency (in Hz or FPS). Minimum frequency is 0.016 (1 frame per minute) and maximum is 25 (25 frames per second).

Parameters:
frequency - the frequency

isFPSDisplayed

public boolean isFPSDisplayed()

setFPSDisplayed

public void setFPSDisplayed(boolean displayed)

isStarting

public boolean isStarting()
Is webcam starting.

Returns:

setFillArea

public void setFillArea(boolean fillArea)
Image will be resized to fill panel area if true. If false then image will be rendered as it was obtained from webcam instance.

Parameters:
fillArea - shall image be resided to fill panel area

isFillArea

public boolean isFillArea()
Get value of fill area setting. Image will be resized to fill panel area if true. If false then image will be rendered as it was obtained from webcam instance.

Returns:
True if image is being resized, false otherwise

propertyChange

public void propertyChange(PropertyChangeEvent evt)
Specified by:
propertyChange in interface PropertyChangeListener

Bartosz Firyn (SarXos)

Copyright © 2012-2013 Bartosz Firyn (SarXos). All Rights Reserved.