In realtà GraphicElement non estende direttamente JComponent ma estende un'altra classe che a sua volta estende JComponent.
Quindi io devo estendo per forza estendere il JComponent in quanto estendo la classe intermedia.
Solo che questo GraphicElement deve essere un JButton.
Se il JComponent fosse un interfaccia avrei già risolto in quanto potrei rendere la classe intermedia una interfaccia e GraphicElement che implementa l'interfaccia ed estende il JButton.
Se non mi sono spiegato bene questa è la struttura attuale:
codice:
class TopElement extends JComponent {
public void elementMethod() {
//Some action
}
}
class GraphicElement extends TopElement {
private JButton button = new JButton();
@Override
public void elementMethod() {
//Some action
}
@Override
protected void paintComponent(Graphics g) {
//Usa il paint di button
}
}
Se invece usassi una interfaccia funzionerebbe:
codice:
interface TopElement extends JComponentIf {
public void elementMethod();
}
class GraphicElement extends JButton implements TopElement {
@Override
public void elementMethod() {
//Some action
}
}
Ovviamente JComponentIf non ce l'ho, dovrei scriverla per tutti i metodi di JComponent