How to set jTextArea to have height that matches the size of a text it contains (to avoid scrollbars)

celicni picture celicni · Jun 21, 2010 · Viewed 15.3k times · Source

This problem looks trivial, but I can't find the solution.

When I create a form it contains a JTextArea. I want to put large constant text in it. If the text is say 1000 lines long, I want my JTextArea to be 1000 lines high (to be large enough to display the entire text without scrollbars). JTextArea is inside a panel which can have scrollbar so it is not a problem when it gets too large (there are two JTextArea in that panel.. something like in a diff tool). Does anybody knows how can I achieve this? Thanks.

Answer

akf picture akf · Jun 21, 2010

The BorderLayout will handle the scrollbar out of the box if you simply put your JTextAreain a JScrollPane before you add it to your JPanel. FlowLayout, on the other hand, does not. It will not display the scroll bar unless, as @Xorty intimates, you call setPreferedSize() on your JScrollPane and give it the dimension that you would like.