I'd use 'new JTextArea(*width of field1 + label2 + field2*, height) if I could
No, that is not what I am suggesting.
When you do:
the text field will calculate its preferred width based on support 10 characters of the current Font size.
So by using new JTextArea(row, columns), you specify the row/column, not the actual pixel value and the text area will determine its preferred size.
So if you use 20, then its preferred size should be less than the 2 text fields and JLabel.
I'm actually just using new JTextArea()
Then the width should not be an issue. Since it is greater than the text field, then my next guess is that you are using frame.setSize(...) instead of frame.pack(). When specifying the size the text area will grow to fill the space. When using pack the text area should only grow to be right aligned with the text field, since the text fields will control the preferred width.
Without a proper SSCCE, I can't offer any more advice, in this or future postings. As I said above, I don't have time to guess what you may or may not be doing.