Я согласен с jzd, все зависит.
Технически говоря, если вы имеете дело с GUI, на мой взгляд, лучше создавать компоненты тогда, когда они вам нужны, например, расширяя JComponent.Таким образом, вы можете просто использовать их повторно.
Лично я никогда не использовал бы второй вариант в моем классе.Я хотел бы, чтобы класс возвращал другой компонент только в том случае, если для этого есть очень веская причина, например, чтобы позволить пользователю изменять внешний вид кнопки в вашем сложном компоненте календаря.
По очень простой причине каждый класс компонента должен знать, для чего он имеет этот компонент, и он должен контролировать представление в соответствии с тем, что происходит.Таким образом, у вас были бы соответствующие методы.