Спасибо всем за ответы. В конце концов я нашел решение из нескольких ответов.
Мое окончательное решение следующее:
Я использую BorderLayout, устанавливаю западную, центральную и восточную панели, а затем управляю их размерами, устанавливая PreferredSize для западной и восточной панелей. Схема рендеринга следующая: при разметке компонентов BorderLayout отдает восточным и западным панелям свой PreferredSize, а остальное пространство - центральной панели. Поэтому с помощью простых вычислений я могу безболезненно управлять размером каждой из трех панелей.
Я также добавил разделители (изначально только компоненты JPanel с фиксированным размером) к панелям West и East (их размер также учитывается при расчете). Для динамического изменения размера я обрабатываю события перетаскивания на этих разделителях и пересчитываю размеры панели.
Обновление выполняется с использованием следующего фрагмента:
container.setVisible (ложь);
container.revalidate ();
container.repaint ();
container.setVisible (истина);
Я хотел бы поместить этот код где-нибудь, чтобы он был доступен для других, но я не знаю, где именно это сделать. Так что если вы знаете такое место, пожалуйста, укажите мне на это в комментариях.