Why is TextArea a Container?
scrollToLine() isn't implemented. Remove.
Wrap.
Have TextArea extend TextComponent.

Should work the same. There's one thing in TextComponent that's
an internal support method for LabelRenderers, which are assumed
to be used by all TextComponents for rendering, but a TextArea doesn't.
That should be fine.

The only other worry is that any code that is using UserInterface's
getText(String tag) or setText(String tag, String text) will now
include TextAreas in their net when they didn't before. If anyone
is using these methods in a UI that contains a TextArea
*with the same tag* as something that previously extended TextComponent,
then I'm sorry, you might need to adjust something. Should be very rare.
getText() works.
Wrap lines after any whitespace.