I've been banging my head over this for the past two days. I need to create a dialog with a relatively long warning text at the top, as well as some controls at the bottom. Well, what I usually do in this case is wrap the message in HTML tags, set it as text to a JLabel and set preferred label size to some fixed value (so that it'll wrap into several lines and the height would be computed automatically). The text would be localized, so I don't know in advance how many lines it'll occupy - so the label's height *has* to be dynamic. Unfortunately, it seems like GridLayoutManager doesn't compute the overall dialog's height correctly in this case - the dialog is smaller than required, so some controls (and sometimes even some label text if it's really long) get cut off and are invisible after the default .pack()/.setVisible(true) call.
If I change layout manager to GridBagLayout, the height of the dialog is computed properly and it shows all text and all components, as expected. Unfortunately, all other frames/dialogs in my application use IntelliJ GridLayoutManager, so this particular dialog looks somewhat inconsistent when managed by another layout manager :-(.
Any advice would be greatly appreciated.