Objekt wie Objekt anderer Klasse behandeln

gnome

Mitglied
Mir ist leider kein besserer Titel eingefallen um das Problem zu beschreiben, hab nämlich folgende Situation:
Ich programmiere eine GUI und nutze dafür NetBeans. Da hab ich nen jPanel, und weil ich die PaintComponent Methode überschreiben möchte hab ich mir ne eigene Klasse geschrieben die von jPanel abgeleitet ist.
erzeugt wird das Panel also durch

Code:
jPanel dasPanel = new eigeneKlasse();
ich kann leider nicht
Code:
eigeneKlasse dasPanel = new eigeneKlasse();
draus machen, da NetBeans den Code erzeugt und dieser unveränderbar ist. (falls es doch geht und jemand weiß wie wäre das Problem damit schon gelöst)

jetzt hat die eigene Klasse aber noch weitere Methoden die ich aufrufen möchte.
dasPanel.eigeneMethode() geht natürlich nicht da das Objekt ja als jPanel deklariert ist.
Gibt es ne Möglichkeit dem Compiler zu sagen dass es ein Objekt von eigeneKlasse ist und sich die Methode so aufrufen lässt?
 
Zuletzt bearbeitet:
Ich kenne mich mit NetBeans nicht aus, aber du kannst nur auf die Funktionen einer Klasse zugreifen, wenn du explizit diese oder eines der Eltern-Klassen ansprichst.
Dein genannter Code funktioniert aber eh nicht, da du
Java:
jPanel dasPanel = new eigeneKlasse();
nicht tun darfst, da die Objekt-Typen nicht die gleichen sind.
 
also genaugenommen ist es deklariert mit
Code:
JPanel dasPanel;
dasPanel = dasPanel = new eigeneKlasse();
und das funktioniert so. eigeneKlasse ist ja von jPanel abgeleitet.

hab netbeans jetzt ausgetrickst indem ich die erzeugte variabledeklaration in nem kommentar eingeschlossen habe und danach meine eigene geschrieben habe.
Wäre aber super wenn jemand ne saubere Lösung kennt.
 
Ich verstehe dein eigentliches Problem zwar nicht (wieso solltest du automatisch generierten Code nicht ändern können?:autsch🙂

...aber du kannst natürlich casten, wo es nötig und sinnvoll ist.

Wenn z.B. B von A erbt, dann kannst du folgendes schreiben:
Java:
A a = new B(); // B ist ein A, also ist die Zuweisung legitim
B b = (B) a; // Zur Laufzeit steckt in a aber tatsächlich (sogar) ein B, als können wir dem Compiler das mitteilen und a auf B casten.
 
Zuletzt bearbeitet:
NetBeans lässt es halt nicht zu. macht ja auch Sinn weil der Code jedes Mal neu generiert wird, deswegen war mein Problem, dass netbeans a als

Code:
B a = new A();

deklariert hat, compiler denkt also a ist objekt von B und lässt mich keine methoden aufrufen die nur A hat.

naja wie gesagt habs jetzt mehr oder weniger gelöst, ist nur keine saubere Lösung.
 

Neue Themen


Zurück
Oben