Лично я бы предпочел унаследовать JPanels.Я считаю, что аспект повторного использования больше склоняется к использованию панелей пользовательского интерфейса и их повторному использованию.
Способ создания моих Swing-интерфейсов состоит в том, чтобы иметь JFrame и использовать панель, состоящую из повторно используемых панелей, если они совместно используютобщие функциональные возможности.
Если у вас есть JFrame, который имеет общие функциональные возможности, то вы можете создать его с заданным CloseHandler и другим общим кодом, а затем сделать так, чтобы другие Jframes наследовали от этого общего.