Class MultiLineLabel

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class MultiLineLabel extends JPanel
Class to render a String that has new line characters as a multiline label. Calculates the resizing and centering characteristics.

Not affected by HTML formatting.

See Also:
  • Field Details

    • LEFT

      public static final int LEFT
      Indicator for left alignment.
      See Also:
    • CENTER

      public static final int CENTER
      Indicator for centering each line.
      See Also:
    • lines

      protected String[] lines
    • num_lines

      protected int num_lines
    • margin_width

      protected int margin_width
    • margin_height

      protected int margin_height
    • line_height

      protected int line_height
    • line_ascent

      protected int line_ascent
    • line_widths

      protected int[] line_widths
    • max_width

      protected int max_width
    • alignment

      protected int alignment
  • Constructor Details

    • MultiLineLabel

      public MultiLineLabel()
      Default constructor.
    • MultiLineLabel

      public MultiLineLabel(String label, int margin_width, int margin_height, int alignment)
      Construct a new MultiLineLabel.
      Parameters:
      label - String to split up if it contains new line characters
      margin_width - width of label
      margin_height - height of label
      alignment - alignment of label, LEFT, CENTER, or RIGHT
    • MultiLineLabel

      public MultiLineLabel(String label)
      Construct a new MultiLineLabel that is left aligned with the default width and height margins.
      Parameters:
      label - String to split up if it contains new line characters
  • Method Details

    • newLabel

      protected void newLabel(String label)
      breaks specified label into array of lines.
      Parameters:
      label - String to display in canvas.
    • measure

      protected void measure()
      This method figures out how large the font is, and how wide each line of the label is, and how wide the widest line is.
    • setLabel

      public void setLabel(String label)
      Set a new label for JPanel
      Parameters:
      label - String to display in canvas
    • setLabel

      public void setLabel(String[] text)
      Set the label text.
      Parameters:
      text - array of strings to display.
    • getLabel

      public String getLabel()
      Get the label text.
    • setFont

      public void setFont(Font f)
      Sets a new font for label
      Overrides:
      setFont in class JComponent
      Parameters:
      f - Font to set label
    • setForeground

      public void setForeground(Color c)
      Sets a new color for Canvas
      Overrides:
      setForeground in class JComponent
      Parameters:
      c - Color to display in canvas
    • setAlignment

      public void setAlignment(int a)
      Set alignment for text, LEFT, RIGHT, CENTER.
      Parameters:
      a - the new alignment.
    • setMarginWidth

      public void setMarginWidth(int mw)
      Set margin width.
      Parameters:
      mw - the new margin width.
    • setMarginHeight

      public void setMarginHeight(int mh)
      Sets the margin height
      Parameters:
      mh - the new margin height.
    • getAlignment

      public final int getAlignment()
      Get alignment for text, LEFT, CENTER, RIGHT.
    • getMarginWidth

      public final int getMarginWidth()
      Get margin width.
    • getMarginHeight

      public final int getMarginHeight()
      Get margin height.
    • addNotify

      public void addNotify()
      This method is invoked after Canvas is first created but before it can be actually displayed. After we have invoked our superclass's addNotify() method, we have font metrics and can successfully call measure() to figure out how big the label is.
      Overrides:
      addNotify in class JComponent
    • getPreferredSize

      public Dimension getPreferredSize()
      This method is called by a layout manager when it wants to know how big we'd like to be
      Overrides:
      getPreferredSize in class JComponent
    • getMinimumSize

      public Dimension getMinimumSize()
      This method is called when layout manager wants to know the bare minimum amount of space we need to get by.
      Overrides:
      getMinimumSize in class JComponent
    • paint

      public void paint(Graphics g)
      This method draws label (applets use same method). Note that it handles the margins and the alignment, but that is does not have to worry about the color or font -- the superclass takes care of setting those in the Graphics object we've passed.
      Overrides:
      paint in class JComponent
      Parameters:
      g - the graphics context to paint with.
    • main

      public static void main(String[] args)
      Simple test for the MultiLineLabel class.
      Parameters:
      args - not used