edu.northwestern.at.utils.swing
Class LinkLabel

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 edu.northwestern.at.utils.swing.LinkLabel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.SwingConstants
Direct Known Subclasses:
LinkTextTableCellRenderer

public class LinkLabel
extends javax.swing.JLabel

LinkLabel: a label which optionally contains clickable hypertext.

Restriction:

If you add an icon to the label, make sure your text always follows the icon. You may adjust the vertical text position as you desire.

You may also request that the mouse cursor change to the hand cursor whenever the mouse passes over clickable text. Invoke:

setChangeCursor( true );

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JLabel
javax.swing.JLabel.AccessibleJLabel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  boolean changeCursor
          True to change cursor to hand cursor when mouse moves over clickable text.
protected  java.awt.Color foregroundColor
          Initial foreground color.
protected  Link link
          Link to go to when label is clicked.
protected  java.awt.event.MouseListener mouseListener
          Mouse listener.
protected  java.awt.event.MouseMotionListener mouseMotionListener
          Mouse motion listener.
 
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
LinkLabel()
          Create an empty linkLabel.
LinkLabel(java.lang.String text)
          Create a linkLabel with label text.
LinkLabel(java.lang.String text, Link link)
          Creates a linkLabel with a specified link.
LinkLabel(java.lang.String text, Link link, boolean cursorChange)
          Creates a linkLabel with a specified link and cursor change setting.
 
Method Summary
protected  void changeCursor(java.awt.Cursor cursor)
          Change cursor.
protected  boolean cursorOverLink(java.awt.event.MouseEvent e)
          Is the mouse cursor positioned over the link text?
 boolean getChangeCursor()
          Returns the current change cursor setting.
 java.awt.Cursor getCurrentCursor()
          Get the current cursor.
 Link getLink()
          Returns the link.
protected  java.awt.Rectangle getTextPosition()
          Get the position of the text within the label.
 void paint(java.awt.Graphics g)
          Paints the label.
 boolean pointOverLink(java.awt.Point point)
          Is a specified point over the link text?
 void setChangeCursor(boolean changeCursor)
          Sets the mouse cursor changeable.
 void setLink(Link link)
          Sets the link.
 
Methods inherited from class javax.swing.JLabel
checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getUIClassID, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabelFor, setText, setUI, setVerticalAlignment, setVerticalTextPosition, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, 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, 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

link

protected Link link
Link to go to when label is clicked.


changeCursor

protected boolean changeCursor
True to change cursor to hand cursor when mouse moves over clickable text.


foregroundColor

protected java.awt.Color foregroundColor
Initial foreground color.


mouseListener

protected java.awt.event.MouseListener mouseListener
Mouse listener.

When the mouse is positioned over the link text, change the cursor to a hand cursor. When the link is clicked, go to the specified link position.


mouseMotionListener

protected java.awt.event.MouseMotionListener mouseMotionListener
Mouse motion listener.

When the mouse is positioned over the link text, change the cursor to a hand cursor. When the mouse is not position over the link text, use the default cursor.

Constructor Detail

LinkLabel

public LinkLabel()
Create an empty linkLabel.


LinkLabel

public LinkLabel(java.lang.String text)
Create a linkLabel with label text.

Parameters:
text - Text of label

LinkLabel

public LinkLabel(java.lang.String text,
                 Link link)
Creates a linkLabel with a specified link.

Parameters:
text - Text of label.
link - Link.

LinkLabel

public LinkLabel(java.lang.String text,
                 Link link,
                 boolean cursorChange)
Creates a linkLabel with a specified link and cursor change setting.

Parameters:
text - Text of label.
link - Link.
cursorChange - True to change cursor when mouse passes over link text.
Method Detail

setLink

public void setLink(Link link)
Sets the link.

Parameters:
link - Link.

getLink

public Link getLink()
Returns the link.

Returns:
The link.

setChangeCursor

public void setChangeCursor(boolean changeCursor)
Sets the mouse cursor changeable.

Parameters:
changeCursor - True to change the mouse cursor to the hand cursor when passing over the link text.

getChangeCursor

public boolean getChangeCursor()
Returns the current change cursor setting.

Returns:
True if the cursor is allowed to change to the hand cursor when the mouse passes over the link text.

cursorOverLink

protected boolean cursorOverLink(java.awt.event.MouseEvent e)
Is the mouse cursor positioned over the link text?

Parameters:
e - The mouse event.
Returns:
True if the mouse is positioned over the link text.

pointOverLink

public boolean pointOverLink(java.awt.Point point)
Is a specified point over the link text?

Parameters:
point - The point to check.
Returns:
True if the point is over the link text.

paint

public void paint(java.awt.Graphics g)
Paints the label.

Overrides:
paint in class javax.swing.JComponent
Parameters:
g - Graphics object for painting

If the label has a link defined, the link text is painted as blue underlined text.


getTextPosition

protected java.awt.Rectangle getTextPosition()
Get the position of the text within the label.

Returns:
The position as a Rect. Note that the vertical text position is the bottom of the text, not the top. We need the bottom location for underlining.

changeCursor

protected void changeCursor(java.awt.Cursor cursor)
Change cursor.

Parameters:
cursor - The new cursor.

getCurrentCursor

public java.awt.Cursor getCurrentCursor()
Get the current cursor.

Returns:
The current cursor.