Dynamisch erstelle Komponente ansprechen

mckruep

Mitglied
Hey Leute,

ich schreibe gerade an einem Programm bei dem zur Laufzeit in einen Taskpane weitere JXTaskpanes erstellt. Das Problem ist das ich über einen "Button" Inhalte reinschreiben möchte. Allerdings komm ich nicht an die Komponente ran.
Jetzt hab ich die Idee die Referenz auf dieses neu erstellte Pane zu speichern und dann darauf zuzugreifen.
Jetzt weiss ich nur nicht wie ich daran komme. Erzeugt wird das Ganze über
Code:
 JXTaskPane befundTaskPane = new JXTaskPane();

Kann mir jemand helfen?

Danke schonmal

Gruß
 
Du kannst doch einfach auch einen Vector zum Beispiel nehmen und dort alle Componenten rein gibst, so kannst du alle über den Index ansprechen. Oder du machst es mit einer HashMap, dann kannst du für jede Componnente einen Namen oder ID verwenden.
 
Die Idee hört sich auch nicht schlecht an. Kannst du mir dafür mal n kleines Code Beispiel geben? Kann mir nämlich gerade nicht so ganz vorstellen wie das aussieht. Das müsste dann aber doch auch an dieser stelle passieren oder?
 
Eigentlich ist es egal wo.

Beispielcode hab ich jetzt nicht, auch leider grade keine Zeit dafür. Aber ich versuche es dir mal zu erklähren:

Du hast einen Vector. Jetzt wird dynamisch eine neue Componente erstellt. Ich mach jetzt mal ein Beispiel mit einem normalen Panel:
Java:
JPanel jpanNew = new JPanel();
...
//Dinge mit dem JPanel tun
...
//Panel in den Vector schieben
vecPanels.add( jpnNew );

...

//Panels wieder ansprechen z.B. größe ändern
((JPanel)vecPanels.get(Indes des gewünschten Panels)).setSize(80,80);

Könnte nur Probleme geben, wenn du ein Panel löscht, dann rücken die anderen glaub ich nach.

Änlich kannst du es machen, wenn du verlangst, dass der User einen Namen für das neue Panel mit angibt. Dann kannst du den Namen nämlich als Schlüssel verwenden und statt dem Vector eine HashMap nutzen ;).
 
Ah so meintest das. Aber so umständlich muss das gar nicht sein. Muss nur einmal in das Panel schreiben und dann kann das Programm "vergessen" wo das Panel ist. Dafür müsste doch die Referenz reichen oder ? Aber wie komm ich an die ran (würde auch bei dem Vector das Problem bleiben)
 
Hmm, wenn du auf den Button drückst, soll dann etwas in ein bestimmtes geschrieben werden oder einfach etwas in alle?
 
Ich erzähl am Besten mal eben wodrums geht. Also ich entwickel von der FH aus in Zusammenarbeit mit einem Krankenhaus eine Hilfssoftware für den Chirugen, der dann mit nem Klick in eine Grafik den Ort der Verletzung bestimmen kann. Soweit so gut das auslesen des klickens etc. funktioniert soweit ganz gut nur jetzt soll das dann in das dynamisch erstellte Panel geschrieben werden (kann halt ausgewählt werden ob Wunde, Schwellung etc.) dieses Panel wird mit Komponenten gefüllt die aus der Datenbank gelesen werden (ums alles möglichst flexibel zu halten)
Das Problem ist halt die Kommunikation zwischen der Grafik und dem Panel.

Hoffe das ist einigermaßen verständlich sonst auch gerne ICQ
 
Hmm, also lass mal sehen ob ich das verstanden habe:
Es gibt eine Grafik. Der User klickt dort rein. Wenn er das tut, dann wird ein neues Panel angelegt, in welches dann etwas einmalig geschrieben wird.

Wenn das so richtig ist, dann ist das kein Problem. Stimmt denn alles?
 
Nicht ganz. Der User kann über eine Combobox auswählen was es ist. Nehmen wir einfach Wunde.
Dann wird in einem Taskpane ein JXPanel erzeugt mit z.b. Lokalisation, Tiefe, Breite, Verschmutzt

Und dann soll beim klick in die Grafik in Lokalisation geschrieben werden.

Alles nicht so ganz einfach leider :) aber danke schonmal für deine ganze Mühe
 
Ich weis zwar nicht, ob es vorgeschrieben ist, so vorzugehen, aber mach doch einfach so, dass du ein Panel erst anlegst, wenn der User in die Grafik klickt. So könntest du es erzeugen und anschleißend hinzufügen. So verhinderst du auch, dass Infos in ein Panel geschrieben werden sollen, aber keines da ist.

Oder du schiebst das Panel in einen Vector. Wenn der User jetzt in die Graphic klickt, guckst du in den Vector. Wenn da ein Panel vorhanden ist, schreibst du dort deine Infos rein und entfernst es aus dem Vector. Also stellt der Vector praktisch einen Pool von freien Panels dar.
 

Neue Beiträge

Zurück