Вы хотите начать с архитектуры Model-View-Controller.Это позволяет максимально защитить ваш пользовательский интерфейс от изменений данных.Слой модели - это ваши объекты данных.Слой View - это ваши фактические компоненты Swing.Слой Controller - это ваши слушатели.Слой модели написан независимо от двух других, без знания классов.Слой View написан без знания уровня Controller.
Если вам требуется больше абстракции, чем вы, вы можете создать интерфейсы для уровня Model, чтобы несколько разных моделей данных могли использовать один и тот же интерфейс.Таким образом, не имеет значения, какие данные вы предоставляете слою View, он просто отображает их с помощью интерфейса.
Также следует понимать, что не всегда возможно выполнить то, что вы запрашиваете.Иногда пользовательский интерфейс должен быть написан специально для отображаемых данных.Дерево не всегда дерево, а сетка не всегда сетка.Он хорошо работает для настройки слоя просмотра в соответствии с отображаемыми данными.Таким образом, вы можете адаптировать функциональность конкретно к данным, с которыми вы работаете, и создать лучший интерфейс для ваших пользователей.
Конечно, однако, это следует делать там, где это имеет смысл.Именно здесь опыт и суждение играют большую роль.