Просто общий комментарий, а не реальный ответ на вашу ситуацию - визуальные компоненты не созданы для наследования. Например, посмотрите на ужасную ошибку Sun, унаследованную от Component - теперь у вас есть JList, к которому вы не можете использовать .add () для добавления элементов. Если вы не можете выполнить весь контракт суперкласса (а я знаю только несколько классов, которые могут) предпочитают композицию, а не наследование. Предоставьте методы, которые вы планируете выполнить, и метод «Component getAsComponent ()» с явным объявлением, что компонент не должен изменяться напрямую. Я нахожу это намного проще, чем думать о том, «что мне делать, если кто-то использует add (JLabel) для моего компонента? Или setLayout ()?».
Что касается вашего конкретного затруднительного положения - я использую JFormDesigner в IntelliJ IDEA, но это также может быть применимо. У JFD есть хороший способ использования информации компонента BeanInfo (для компонента с именем «MyThingy» класс информации будет «MyThingyBeanInfo»). Используя этот класс, вы можете определить множество вещей для потребления только во время разработки, а также специальные методы рисования и другие тонкости.