Class JXHyperlink

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.SwingConstants
    Direct Known Subclasses:
    JXRendererHyperlink

    public class JXHyperlink
    extends javax.swing.JButton
    A hyperlink component that derives from JButton to provide compatibility mostly for binding actions enabled/disabled behavior accessibility i18n etc...

    This button has visual state related to a notion of "clicked": foreground color is unclickedColor or clickedColor depending on its boolean bound property clicked being false or true, respectively. If the hyperlink has an action, it guarantees to synchronize its "clicked" state to an action value with key LinkAction.VISITED_KEY. Synchronization happens on setAction() and on propertyChange notification from the action. JXHyperlink accepts any type of action - AbstractHyperlinkAction is a convenience implementation to simplify clicked control.

     
          LinkAction linkAction = new LinkAction("http://swinglabs.org") {
                public void actionPerformed(ActionEvent e) {
                    doSomething(getTarget());
                    setVisited(true);
                }
          };
          JXHyperlink hyperlink = new JXHyperlink(linkAction);
      
    The hyperlink can be configured to always update its clicked property after firing the actionPerformed:
     
          JXHyperlink hyperlink = new JXHyperlink(action);
          hyperlink.setOverrulesActionOnClick(true);
      
    By default, this property is false. The hyperlink will auto-click only if it has no action. Developers can change the behaviour by overriding isAutoSetClicked();
    Author:
    Richard Bair, Shai Almog, Jeanette Winzenburg
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JButton

        javax.swing.JButton.AccessibleJButton
      • Nested classes/interfaces inherited from class javax.swing.AbstractButton

        javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
      • 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

      Fields 
      Modifier and Type Field Description
      static java.lang.String uiClassID  
      • Fields inherited from class javax.swing.AbstractButton

        actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
      • Fields inherited from class javax.swing.JComponent

        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

        accessibleContext, 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
      • 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
    • Constructor Summary

      Constructors 
      Constructor Description
      JXHyperlink()
      Creates a new instance of JXHyperlink with default parameters
      JXHyperlink​(javax.swing.Action action)
      Creates a new instance of JHyperLink and configures it from provided Action.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void configurePropertiesFromAction​(javax.swing.Action a)
      Read all the essential properties from the provided Action and apply it to the JXHyperlink
      protected java.beans.PropertyChangeListener createActionPropertyChangeListener​(javax.swing.Action a)
      Creates and returns a listener that will watch the changes of the provided Action and will update JXHyperlink's properties accordingly.
      protected void fireActionPerformed​(java.awt.event.ActionEvent event)
      java.awt.Color getClickedColor()
      Returns the foreground color for visited links.
      boolean getOverrulesActionOnClick()
      Returns a boolean indicating whether the clicked property should be set always on clicked.
      java.lang.String getUIClassID()
      Returns a string that specifies the name of the L&F class that renders this component.
      java.awt.Color getUnclickedColor()
      Returns the foreground color for unvisited links.
      protected boolean isAutoSetClicked()
      Returns a boolean indicating whether the clicked property should be set after firing action events.
      boolean isClicked()
      Returns a boolean indicating if this link has already been visited.
      void setClicked​(boolean clicked)
      Sets the clicked property and updates visual state depending on clicked.
      void setClickedColor​(java.awt.Color color)
      Sets the color for the previously not visited link.
      void setOverrulesActionOnClick​(boolean overrule)
      Sets the overrulesActionOnClick property.
      void setUnclickedColor​(java.awt.Color color)
      Sets the color for the previously visited link.
      void setURI​(java.net.URI uri)
      Convenience method to create and install a HyperlinkAction for the given uri.
      void updateUI()
      Notification from the UIManager that the L&F has changed.
      • Methods inherited from class javax.swing.JButton

        getAccessibleContext, isDefaultButton, isDefaultCapable, paramString, removeNotify, setDefaultCapable
      • Methods inherited from class javax.swing.AbstractButton

        actionPropertyChanged, addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createChangeListener, createItemListener, doClick, doClick, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, init, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, isSelected, paintBorder, removeActionListener, removeChangeListener, removeItemListener, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setEnabled, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelected, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
      • 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, 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, 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, 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • JXHyperlink

        public JXHyperlink()
        Creates a new instance of JXHyperlink with default parameters
      • JXHyperlink

        public JXHyperlink​(javax.swing.Action action)
        Creates a new instance of JHyperLink and configures it from provided Action.
        Parameters:
        action - Action whose parameters will be borrowed to configure newly created JXHyperLink
    • Method Detail

      • setURI

        public void setURI​(java.net.URI uri)
        Convenience method to create and install a HyperlinkAction for the given uri.
        Parameters:
        uri - to uri to create a HyperlinkAction for, maybe null.
        Throws:
        java.awt.HeadlessException - if GraphicsEnvironment.isHeadless() returns true
        java.lang.UnsupportedOperationException - if the current platform doesn't support Desktop
      • getUnclickedColor

        public java.awt.Color getUnclickedColor()
        Returns the foreground color for unvisited links.
        Returns:
        Color for the hyper link if it has not yet been clicked.
      • setClickedColor

        public void setClickedColor​(java.awt.Color color)
        Sets the color for the previously not visited link. This value will override the one set by the "JXHyperlink.unclickedColor" UIManager property and defaults.
        Parameters:
        color - Color for the hyper link if it has not yet been clicked.
      • getClickedColor

        public java.awt.Color getClickedColor()
        Returns the foreground color for visited links.
        Returns:
        Color for the hyper link if it has already been clicked.
      • setUnclickedColor

        public void setUnclickedColor​(java.awt.Color color)
        Sets the color for the previously visited link. This value will override the one set by the "JXHyperlink.clickedColor" UIManager property and defaults.
        Parameters:
        color - Color for the hyper link if it has already been clicked.
      • setClicked

        public void setClicked​(boolean clicked)
        Sets the clicked property and updates visual state depending on clicked. This implementation updated the foreground color.

        NOTE: as with all button's visual properties, this will not update the backing action's "visited" state.

        Parameters:
        clicked - flag to indicate if the button should be regarded as having been clicked or not.
        See Also:
        isClicked()
      • isClicked

        public boolean isClicked()
        Returns a boolean indicating if this link has already been visited.
        Returns:
        true if hyper link has already been clicked.
        See Also:
        setClicked(boolean)
      • setOverrulesActionOnClick

        public void setOverrulesActionOnClick​(boolean overrule)
        Sets the overrulesActionOnClick property. It controls whether this button should overrule the Action's visited property on actionPerformed.

        The default value is false.

        Parameters:
        overrule - if true, fireActionPerformed will set clicked to true independent of action.
        See Also:
        getOverrulesActionOnClick(), setClicked(boolean)
      • getOverrulesActionOnClick

        public boolean getOverrulesActionOnClick()
        Returns a boolean indicating whether the clicked property should be set always on clicked.
        Returns:
        overrulesActionOnClick false if his button clicked property respects the Action's visited property. True if the clicked should be updated on every actionPerformed.
        See Also:
        setOverrulesActionOnClick(boolean), setClicked(boolean)
      • fireActionPerformed

        protected void fireActionPerformed​(java.awt.event.ActionEvent event)

        Overridden to respect the overrulesActionOnClick property.

        Overrides:
        fireActionPerformed in class javax.swing.AbstractButton
      • isAutoSetClicked

        protected boolean isAutoSetClicked()
        Returns a boolean indicating whether the clicked property should be set after firing action events. Here: true if no action or overrulesAction property is true.
        Returns:
        true if fireActionEvent should force a clicked, false if not.
      • createActionPropertyChangeListener

        protected java.beans.PropertyChangeListener createActionPropertyChangeListener​(javax.swing.Action a)
        Creates and returns a listener that will watch the changes of the provided Action and will update JXHyperlink's properties accordingly.
        Overrides:
        createActionPropertyChangeListener in class javax.swing.AbstractButton
      • configurePropertiesFromAction

        protected void configurePropertiesFromAction​(javax.swing.Action a)
        Read all the essential properties from the provided Action and apply it to the JXHyperlink
        Overrides:
        configurePropertiesFromAction in class javax.swing.AbstractButton
      • getUIClassID

        public java.lang.String getUIClassID()
        Returns a string that specifies the name of the L&F class that renders this component.
        Overrides:
        getUIClassID in class javax.swing.JButton
      • 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 javax.swing.JButton
        See Also:
        JComponent.updateUI()