You're not supposed to extend JFrame, JDialog, JPanel, JButton, Janything classes (although certain extensions to table behaviour are only available if you extend it). You can extend JComponent if you feel like doing custom component. If are supposed to implement models (e.g. by extending abstract models), listeners (e.g. by extending adapters), but that's it. You don't need/have to extend swing components usually, and you better not do it, as it makes your code tied to implementation of superclass.