Objekt vom panel entfernen

evoleena

Erfahrenes Mitglied
Objekt vom panel aus Klasse entfernen

Hallo Leute,

ich habe ein Panel auf dem Rechtecke und Kreise gemalt werden, wenn ich die mittlere Maustaste drücke, möchte ich das dort vorhandene Objekt löschen.
Wie kann ich das machen?
Muss ich alle Objekte durchlaufen und schauen, welches die Position hat, oder kann man einfach mit einer Funktion das Objekt aufrufen und entfernen?

Gruß
Evo
 
Zuletzt bearbeitet:

evoleena

Erfahrenes Mitglied
Mhh...

und das heißt jetzt ich muss die Objekte doch durchlaufen und gucken welches die Position hat und dann deinen Codezeile ausführen?

Genauere Erklärung wäre hilfreich

Gruß
Evo
 

Kai008

Erfahrenes Mitglied
Nein. Jedes Objekt was hinzugefügt wird bekommt seine ID. So wie wenn einer List was hinzugefügt wird. Also solltest du nur als Klassenvariable speichern, wie viele Objekte existieren, und jedem Objekt den (Variableninhalt + 1) geben. Allerdings müsstest du beim entfernen wohl von jedem Objekt die ID um 1 verkleinern. Zumindest ist es ja bei Listen so, und ich denke dass das nicht anderst sein wird.
Eventuell eine Klassenmap und die ID so mit dem Objekt verknüpfen. Sollte dir vielleicht eine größere Hilfe sein.

Ach ja, ich habe eine Methode gesehen, die die Positionen beim entfernen nimmt. Hieß glaub ich "removeAt" oder so. Hab sie beim JPanel aber nicht gefunden, ist wohl reine JFrame-Sache. (Obwohl ich dachte, dass die beiden eigendlich von dem selben erben.)
 
Zuletzt bearbeitet:

evoleena

Erfahrenes Mitglied
Sorry, aber ich verstehe nicht was du meinst.
Ich verstehe nicht wie ich auf die ID kommen soll?

Ich selber benutze eine Vector für meine Objekte.
und ich muss ja mein Objekt direkt löschen.
 
Zuletzt bearbeitet:

Kai008

Erfahrenes Mitglied
Er meint "getComponentAt(int, int)".
Die meinte ich vorhin auch.
Was ich meinte war, (meinte, meinte, meinte, meine Deutschlehrerin würde mich killen), dass du abspeicherst, an welcher Position welches Objekt geaddet wurde.
Also das erste 0, das 2. 1 usw. Und wenn du etwas löscht benützt du dazu diese ID. Allerdings müsstest du dann wenn du etwas löscht alle IDs die darüber liegen um 1 subtrahieren.
 

evoleena

Erfahrenes Mitglied
okay mit der Methode hab ich es schon probiert und mit der findComponentAt auch
nur leider hab ich das Problem, das ich das Objekt aus dem Vector vielleicht lösche, das sehe ich leider noch nicht, aber das Objekt aus der Klasse lösche ich noch nicht. Weil es keine Möglichkeit gibt es anzu sprechen.
Und das mit der ID finde ich irgendwie aufwendig.
Da muss es doch eine einfachere Möglichkeit geben oder nicht
 

TheJadix

Erfahrenes Mitglied
Hallo,

nur zum Verständnis ! ? #

Reden wir hier über Objekte im Sinne von Komponenten die dem Panel geaddet
oder nur auf diesen gezeichnet (paint) werden ?

Nur damit man sagen kann wo der Hebel anzusetzen ist !

Gruß Jadix