hai capito come funzionano le interfacce?
In pratica tu hai una roba del genere

codice:
public class MyFrame extends JFrame implements ActionListener, MouseListener{}
la classe estende JFrame, quindi eredita tutto quello che ha JFrame.Ma a te interessa anche poterla considerare di tipo ActionListener e/o MouseListener.
Non potendo aggiungere altre derivazioni, aggiungi l'implementazione delle interfacce:

ti risolvi il problema della gerarchia perché cmq continui a derivare da una sola classe (quindi il costruttore andrà partendo dal tuo, JFrame, ecc )

ti implementi l'ereditarietà multipla, con la pecca di dover definire il comportamento per i metodi specificati dalle interfacce (e puoi usare l'oggetto ovunque tu possa mettere un tipo definito dall'interfaccia)

Queste sono cose che vedi dalla pratica, non tanto dalla teoria