org.jdesktop.swingx
Class JXBusyLabel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JLabel
                  extended by org.jdesktop.swingx.JXBusyLabel
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, SwingConstants

public class JXBusyLabel
extends JLabel

A simple circular animation, useful for denoting an action is taking place that may take an unknown length of time to complete. Similar to an indeterminant JProgressBar, but with a different look.

For example:


     JXFrame frame = new JXFrame("test", true);
     JXBusyLabel label = new JXBusyLabel();
     frame.add(label);
     //...
     label.setBusy(true);
 

Another more complicated example:

 JXBusyLabel label = new JXBusyLabel(new Dimension(100,84));
 BusyPainter painter = new BusyPainter(
 new Rectangle2D.Float(0, 0,13.500001f,1),
 new RoundRectangle2D.Float(12.5f,12.5f,59.0f,59.0f,10,10));
 painter.setTrailLength(5);
 painter.setPoints(31);
 painter.setFrame(1);
 label.setPreferredSize(new Dimension(100,84));
 label.setIcon(new EmptyIcon(100,84));
 label.setBusyPainter(painter);
Another example:

     JXBusyLabel label = new MyBusyLabel(new Dimension(100, 84));
 
where MyBusyLabel is:

 public class MyBusyLabel extends JXBusyLabel {
     public MyBusyLabel(Dimension prefSize) {
         super(prefSize);
     }
     
     protected BusyLabel createBusyLabel(Dimension dim) {
         BusyPainter painter = new BusyPainter(
         new Rectangle2D.Float(0, 0,13.500001f,1),
         new RoundRectangle2D.Float(12.5f,12.5f,59.0f,59.0f,10,10));
         painter.setTrailLength(5);
         painter.setPoints(31);
         painter.setFrame(1);
         
         return painter;
     }
 }
 

See Also:
Serialized Form

Nested Class Summary
static class JXBusyLabel.Direction
          Direction is used to set the initial direction in which the animation starts.
 
Nested classes/interfaces inherited from class javax.swing.JLabel
JLabel.AccessibleJLabel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
static String uiClassID
          UI Class ID
 
Fields inherited from class javax.swing.JLabel
labelFor
 
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 javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JXBusyLabel()
          Creates a new instance of JXBusyLabel initialized to circular shape in bounds of 26 by 26 points.
JXBusyLabel(Dimension dim)
          Creates a new instance of JXBusyLabel initialized to the arbitrary size and using default circular progress indicator.
 
Method Summary
 void addNotify()
          Notifies this component that it now has a parent component.
protected  BusyPainter createBusyPainter(Dimension dim)
          Create and return a BusyPpainter to use for the Label.
protected  void frameChanged()
           
 BusyPainter getBusyPainter()
          Returns the current BusyPainter.
 int getDelay()
           
 String getUIClassID()
          Returns the name of the L&F class that renders this component.
protected  void initPainter(Dimension dim)
          Initialize the BusyPainter and (this) JXBusyLabel with the given preferred size.
 boolean isBusy()
          Gets whether this JXBusyLabel is busy.
 void removeNotify()
          Notifies this component that it no longer has a parent component.
 void setBusy(boolean busy)
          Sets whether this JXBusyLabel instance should consider itself busy.
 void setBusyPainter(BusyPainter busyPainter)
           
 void setDelay(int delay)
           
 void setDirection(JXBusyLabel.Direction dir)
          Sets direction of rotation.
 void updateUI()
          Notification from the UIManager that the L&F has changed.
 
Methods inherited from class javax.swing.JLabel
checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabelFor, setText, setUI, setVerticalAlignment, setVerticalTextPosition
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, 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, 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, transferFocusBackward, 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, 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, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

uiClassID

public static final String uiClassID
UI Class ID

See Also:
Constant Field Values
Constructor Detail

JXBusyLabel

public JXBusyLabel()
Creates a new instance of JXBusyLabel initialized to circular shape in bounds of 26 by 26 points.


JXBusyLabel

public JXBusyLabel(Dimension dim)
Creates a new instance of JXBusyLabel initialized to the arbitrary size and using default circular progress indicator.

Parameters:
dim - Preferred size of the label.
Method Detail

setDirection

public void setDirection(JXBusyLabel.Direction dir)
Sets direction of rotation. Direction.RIGHT is the default value. Direction is taken from the very top point so Direction.RIGHT enables rotation clockwise.

Parameters:
dir - Direction of rotation.

initPainter

protected void initPainter(Dimension dim)
Initialize the BusyPainter and (this) JXBusyLabel with the given preferred size. This method is called automatically when the BusyPainter is set/changed.

Parameters:
dim - The new Preferred Size for the BusyLabel.
See Also:
getBusyPainter(), setBusyPainter(BusyPainter)

createBusyPainter

protected BusyPainter createBusyPainter(Dimension dim)
Create and return a BusyPpainter to use for the Label. This may be overridden to return any painter you like. By default, this method uses the UI (BusyLabelUI)to create a BusyPainter.

Parameters:
dim - Painter size.
See Also:
JLabel.getUI()

isBusy

public boolean isBusy()

Gets whether this JXBusyLabel is busy. If busy, then the JXBusyLabel instance will indicate that it is busy, generally by animating some state.

Returns:
true if this instance is busy

setBusy

public void setBusy(boolean busy)

Sets whether this JXBusyLabel instance should consider itself busy. A busy component may indicate that it is busy via animation, or some other means.

Parameters:
busy - whether this JXBusyLabel instance should consider itself busy

removeNotify

public void removeNotify()
Description copied from class: javax.swing.JComponent
Notifies this component that it no longer has a parent component. When this method is invoked, any KeyboardActions set up in the the chain of parent components are removed.

Overrides:
removeNotify in class JComponent
See Also:
JComponent.registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)

addNotify

public void addNotify()
Description copied from class: javax.swing.JComponent
Notifies this component that it now has a parent component. When this method is invoked, the chain of parent components is set up with KeyboardAction event listeners.

Overrides:
addNotify in class JComponent
See Also:
JComponent.registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)

frameChanged

protected void frameChanged()

getBusyPainter

public final BusyPainter getBusyPainter()
Returns the current BusyPainter. If no BusyPainter is currently set on this BusyLabel, the createBusyPainter(Dimension) method is called to create one. Afterwards, initPainter(Dimension) is called to update the BusyLabel with the created BusyPainter.

Returns:
the busyPainter
See Also:
createBusyPainter(Dimension), initPainter(Dimension)

setBusyPainter

public final void setBusyPainter(BusyPainter busyPainter)
Parameters:
busyPainter - the busyPainter to set

getDelay

public int getDelay()
Returns:
the delay

setDelay

public void setDelay(int delay)
Parameters:
delay - the delay to set

updateUI

public void updateUI()
Notification from the UIManager that the L&F has changed. Replaces the current UI object with the latest version from the UIManager.

Overrides:
updateUI in class JLabel
See Also:
JComponent.updateUI()

getUIClassID

public String getUIClassID()
Returns the name of the L&F class that renders this component.

Overrides:
getUIClassID in class JLabel
Returns:
the string uiClassID
See Also:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)