I currently have JTables nested in JScrollPanes like so:

My problem is
I use setPreferredScrollableViewportSize() in this context, followed by pack() or revalidate() as required.
Addendum:
How do you use it?
It's a feature of the implementation of Scrollable in JTable. Here are several examples. The complementary getPreferredScrollableViewportSize() may also be useful.