@Override
	public int getScrollableUnitIncrement(int topOfScreen, int direction, int max) {

		if ((topOfScreen < -heightAbove) || (topOfScreen > height - heightAbove)) {
			return max;
		}

		int row = getRow(topOfScreen);
		int y = getY(row);
		int rowOffset = topOfScreen - y;
		int rowHeight = getField(row).getHeight();
		if (direction > 0) { // if scrolling down
			return rowHeight - rowOffset;
		}
		else if (rowOffset == 0) {
			return -rowHeight;
		}
		else {
			return -rowOffset;
		}
	}
This constructor will create a text field from an array of FieldElements, putting each
element on its own line.

@param textElements the FieldElements to display
@param startX  the x position to draw the element
@param width   the max width allocated to this field
@param maxLines the max number of lines to display
@param hlFactory the highlight factory
@param rowSeparator The string used to space lines of text when concatenated by the
       getText() method.
Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/VerticalLayoutTextField.java