Я часто просто использовал стандартные JLabels и добавлял mouseListeners, чтобы сделать их кликабельными. В качестве альтернативы, вы можете получить более продвинутый уровень и создать свой собственный класс ButtonUI, если вы хотите действительно детализированный контроль над рендерингом кнопок.