Class HyperlinkLabel

All Implemented Interfaces:
Styleable, EventTarget, Skinnable

public class HyperlinkLabel extends Control implements EventTarget
A UI control that will convert the given text into a series of text labels and hyperlinks, based on the use of delimiter characters to specify where hyperlinks should appear. The delimiter characters are square braces (that is, [ and ]). To create a hyperlink in a string you would therefore do something like hyperlinkLabel.setText("Click [here] for more information!");, with the word 'here' appearing as a hyperlink that a use may click. This approach therefore allows for hyperlinks to be easily embedded within a label.

Once hyperlinks have been declared in a text string, it is necessary to respond to the user interacting with the hyperlink (most commonly via mouse clicks). To do so, you register a single event handler for action events on the HyperlinkLabel instance, and then determine what to do within that callback. For example:

 
 hyperlinkLabel.setOnAction(new EventHandler<ActionEvent>() {
     public void handle(ActionEvent event) {
         Hyperlink link = (Hyperlink)event.getSource();
         final String str = link == null ? "" : link.getText();
         switch(str) {
             case "here": // do 'here' action
                          break;
             case "exit": // do exit action
                          break;
         }
     }
 });

This simple single-handler approach was chosen over any more complex per-hyperlink solution because it is anticipated that most use cases will normally consist of one, or very few hyperlinks, and it was therefore unlikely that the increased API complexity would be warranted.

Screenshot

To demonstrate what a HyperlinkLabel looks like, refer to the screenshot below, when the text "Hello [world]! I [wonder] what hyperlink [you] [will] [click]" was passed in to the HyperlinkLabel instance:

Screenshot of HyperlinkLabel
See Also:
  • Property Details

  • Constructor Details

    • HyperlinkLabel

      public HyperlinkLabel()
      Creates an empty HyperlinkLabel instance with no text specified.
    • HyperlinkLabel

      public HyperlinkLabel(String text)
      Creates a HyperlinkLabel instance with the given text value used as the initial text.
      Parameters:
      text - The text to display to the user.
  • Method Details

    • createDefaultSkin

      protected Skin<?> createDefaultSkin()
      Overrides:
      createDefaultSkin in class Control
    • textProperty

      public final StringProperty textProperty()
      Return a StringProperty representing the text being displayed.
      See Also:
    • getText

      public final String getText()
      Return the text currently displayed.
      Returns:
      the text currently displayed.
    • setText

      public final void setText(String value)
      Set a new text to display to the user, using the delimiter characters [ and ] to indicate where hyperlinks should be displayed.
      Parameters:
      value -
    • onActionProperty

      public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
      The action, which is invoked whenever a hyperlink is fired. This may be due to the user clicking on the hyperlink with the mouse, or by a touch event, or by a key press.
      See Also:
    • setOnAction

      public final void setOnAction(EventHandler<ActionEvent> value)
      Sets a new EventHandler which will be invoked whenever a hyperlink is fired.
      Parameters:
      value -
    • getOnAction

      public final EventHandler<ActionEvent> getOnAction()
      Returns:
      the action, which is invoked whenever a hyperlink is fired.
    • getUserAgentStylesheet

      protected final String getUserAgentStylesheet(Class<?> clazz, String fileName)
      A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once. Caches the external form of the resource.
      Parameters:
      clazz - the class used for the resource lookup
      fileName - the name of the user agent stylesheet
      Returns:
      the external form of the user agent stylesheet (the path)