Class AutoResizingTextArea

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

public class AutoResizingTextArea extends JTextArea
An extended version of JTextArea that automatically resizes itself vertically. This component works best when used in a layout that obeys preferred height of its components. For example, you can use a BorderLayout and place AutoResizingTextArea to the north or south side. Similarly, you can use a JideBoxLayout and use FLEXIBLE or FIX as the constraint.
See Also:
  • Field Details

    • DEFAULT_MAX_ROWS

      public static final int DEFAULT_MAX_ROWS
      Default maximum height of the text area in rows.
      See Also:
    • DEFAULT_MIN_ROWS

      public static final int DEFAULT_MIN_ROWS
      Default minimum height of the text area in rows.
      See Also:
  • Constructor Details

    • AutoResizingTextArea

      public AutoResizingTextArea()
      Creates a textarea with the default minimum and maximum number of rows.
    • AutoResizingTextArea

      public AutoResizingTextArea(int minRows)
      Creates a textarea with the specified minimum number of rows.
      Parameters:
      minRows - The minimum number of rows that this textarea can have.
    • AutoResizingTextArea

      public AutoResizingTextArea(int minRows, int maxRows)
      Creates a textarea with the specified minimum and maximum number of rows.
      Parameters:
      minRows - The minimum number of rows that this textarea can have.
      maxRows - The maximum number of rows that this textarea can have.
    • AutoResizingTextArea

      public AutoResizingTextArea(String text)
      Creates a textarea with the default minimum and maximum row count and the provided initial text. The textarea is sized to fit the provided text.
      Parameters:
      text - The initial text to display.
    • AutoResizingTextArea

      public AutoResizingTextArea(int minRows, int maxRows, int columns)
      Create a new AutoResizingTextArea with a height bounded by the provided minimum and maximum row counts and with its width dictated by the provided column count.
      Parameters:
      minRows - The minimum number of rows that this textarea can have
      maxRows - The maximum number of rows that this textarea can have.
      columns - The number of columns that this textarea has.
    • AutoResizingTextArea

      public AutoResizingTextArea(String text, int minRows, int maxRows, int columns)
      Create a new AutoResizingTextArea with a height bounded by the provided minimum and maximum row counts and with its width dictated by the provided column count. The textarea is sized to fit the provided text.
      Parameters:
      text - The initial text to display in the textarea.
      minRows - The minimum number of rows that this textarea can have
      maxRows - The maximum number of rows that this textarea can have.
      columns - The number of columns that this textarea has.
      Throws:
      IllegalArgumentException - if the rows or columns arguments are negative.
    • AutoResizingTextArea

      public AutoResizingTextArea(Document doc)
      Create a new AutoResizingTextArea using a Document. The document will be set to the text area using setDocument(javax.swing.text.Document).
      Parameters:
      doc - the document.
    • AutoResizingTextArea

      public AutoResizingTextArea(Document doc, String text, int minRows, int maxRows, int columns)
      Constructs a new AutoResizingTextArea with the specified number of rows and columns, and the given model. All of the constructors feed through this constructor.
      Parameters:
      doc - the model to use, or create a default one if null
      text - the text to be displayed, null if none
      minRows - the minimum number of rows >= 0
      maxRows - the maximum number of rows >= 0
      columns - the number of columns >= 0
      Throws:
      IllegalArgumentException - if the rows or columns arguments are negative.
  • Method Details

    • setRows

      public void setRows(int rows)
      Sets the number of visible rows. The row value will be forced to the boundaries of the range [minRows ... maxRows] if it is outside that range.
      Overrides:
      setRows in class JTextArea
      Parameters:
      rows - The number of rows to show
    • numberOfRowsUpdated

      protected void numberOfRowsUpdated(int oldRow, int newRow)
      Called when the number of rows is updated. By default, it will get the parent scroll pane and call revalidate. Subclass can override it to customize the behavior when number of rows is updated.
      Parameters:
      oldRow - the previous row count.
      newRow - the new row count.
    • getMaxRows

      public int getMaxRows()
      Gets the maximum number of rows that will be displayed. You can set it using setMaxRows(int) or passed in using constructor such as AutoResizingTextArea(int, int).
      Returns:
      the maximum number of rows that will be displayed.
    • setMaxRows

      public void setMaxRows(int maxRows)
      Sets the maximum number of rows that will be displayed.
      Parameters:
      maxRows - The maximum number of rows.
    • getMinRows

      public int getMinRows()
      Gets the minimum number of rows that will be displayed. You can set it using setMinRows(int) or passed in using constructor such as AutoResizingTextArea(int, int).
      Returns:
      the minimum number of rows that will be displayed.
    • setMinRows

      public void setMinRows(int minRows)
      Sets the minimum number of rows that will be displayed
      Parameters:
      minRows - The minimum number of rows.
    • setDocument

      public void setDocument(Document doc)
      Overrides:
      setDocument in class JTextComponent
    • getPreferredScrollableViewportSize

      public Dimension getPreferredScrollableViewportSize()
      Specified by:
      getPreferredScrollableViewportSize in interface Scrollable
      Overrides:
      getPreferredScrollableViewportSize in class JTextArea