Ableitung von JTextComponent

chrootdev

Grünschnabel
Hallo,

ich habe MyTextComponent von JTextComponent abgeleitet und ein paar Methoden überschrieben.

Code:
public class MyTextComponent extends JTextComponent
{
...
}

Mein Problem ist jetzt:

Folgendes funktioniert:
Code:
JTextComponent jtcomp = new JTextField();

Das wiederum nicht mehr:
Code:
MyTextComponent jtcomp = new JTextField();

Warum funktioniert das zweite Beispiel nicht, obwohl es von JTextComponent abgeleitet wurde?

Danke!
 
Weil JTextField von JTextComponent abgeleitet ist , und nicht von MyTextComponent. Daher meldet der Compiler hier einen ClassCastError *sollte er zumindest* weil er nicht weis was von deiner Klasse erbt. Ansonsten hättest du eine Mehrfachvererbung was in Java nicht zulässig ist , da :
JTextField extends JTextComponent
bereits gegeben ist , müsstest du jetzt also ein eigenes TextField von deiner TextComponent ableiten , also
MyTextField extends MyTextComponent
 
Hi

Du kannst einer Variable Instanzen ihres Typs und aller abgeleiteten Typen zuweisen.

In "JTextComponent jtcomp" passt alles rein, was von JTextComponent abgeleitet ist.
zB. JTextComponent selber, oder JTextField, oder MyTextComponent.
Alles, was mindestens die Methoden und Variablen hat, die JTextComponent auch hat.

Um ein JTextField aber in "MyTextComponent jtcomp" zu speichern müsste JTextField alles haben, was MyTextComponent hat (und vielleicht noch mehr). Mit anderen Worten: JTextField müsste in der Hierarchie unter MyTextComponent stehen, also davon abgeleitet sein.

Gruß
 
Hi,

danke für die Antworten, jetzt ist es mir klar, das das so nicht geht!

Gibts eine andere Möglichkeit, außer ein JTextFiled von MyTextComponent abgeleitet zu bauen, das JTextField in MyTextComponent zu bekommen?

Danke!
 
Nun ... es kommt darauf an was du in der MyTextComponent überschreibst ... wenn es möglich ist solltest du dierekt von JTextField ableiten und darin alles überschreiben was du brauchst.
 
Zurück