# Dynamisch JPanels mit Inhalt erstellen



## mckruep (24. November 2007)

Hallo Leute,

ich würde gerne durch einen Klick auf einen Button zur Laufzeit Tabs erstellen.
Soll so aussehen, dass ich ein Panel generiere und dort Inhalt (immer den gleichen) erstellen möchte. Gibts ne Möglichkeit das in eine Klasse zu schreiben damit ich das nicht in meinem Hauptcode habe? Und wenn ja wie? Also wie man Funktionen aus ner externen Klasse aufruft weiss ich.

Bisher hab ichs soweit das ich 

MeinTabContainer.addTab("Tabname", new JPanel() ) ; 

habe. Das funktioniert auch soweit nur weiss ich leider nicht wie ich die anderen Komponenten da reinbekomme.

Vielleicht könnt ihr mir ja helfen. Danke schonmal im Vorraus!!

Gruß


----------



## zeja (25. November 2007)

Du erstellst eine Klasse die JPanel erweitert:

```
public class DeinPanel extends JPanel {
      public DeinPanel(){
         super(); //Konstruktor von JPanel aufrufen
         init();
      }
      private void init(){
         //hier packst du den Code rein
         //wie labels und buttons etc was auf dein
         //panel raufsoll
      }
}
```

Und dann machst du :

```
meinTabContainer.addTab("Tabname", new DeinPanel() ) ;
```


----------



## mckruep (25. November 2007)

Hallo,

danke für die schnelle und hilfreiche Antwort. Habs hinbekommen. Für alle die es interessiert: 

Man kann auch einfach ein neuen JPanel erzeugen und dort dann über den Grafikeditor alles an die passende Position bringen.

Rest dann wie beschrieben.

nochmals vielen Dank

Gruß


----------



## mckruep (26. November 2007)

Hey noch ne Frage die darauf aufbaut:

Kannst du (oder jemand anderes) sagen wie ich auslesen kann welcher Tab aktiv ist?

Ich hab ne Liste wo ich Getränke auswählen will und die dann auf den "Bierdeckel" des Gastes buchen möchte (ist ein Projekt für die FH nichts womit ich Geld verdiene)
Jetzt hab ich aber überhaupt keine Ahnung wie ich das wohl realisiere. Hab mal ein Bild angehängt vielleicht ist es dann verständlich.

danke schonmal im Vorraus!!


----------



## matdacat (26. November 2007)

Siehe API.


----------



## mckruep (26. November 2007)

Hey .. ja die API kenn ich .. aber die hilft mir leider nicht weiter. 

Ich bekomms einfach nicht hin die Dynamisch erzeugten Panels anzusprechen. Es gibt ja keinen wirklichen Variablennamen und das macht es nicht einfacher. Also wenn jemand nen Code hätte wäre mir das wohl lieb


----------



## MeinerEiner_80 (26. November 2007)

Moin!
Das steht alles in der API drin, man müsste nur mal ordentlich lesen... 
Oder was denkst du, wofür die Methode "getSelectedComponent()" sonst sein könnte?

*grüssle*
MeinerEiner


----------



## mckruep (26. November 2007)

auch auf die Gefahr hin wie der letzte Depp dazustehen...

Ich kriegs nicht hin. Ich hab keine ahnung wie ich auf die JList zugreifen kann....

Ich hab schon verstanden das getSelectedComponent(); mir die aktuelle Component zurück gibt, das hilft mir allerdings nicht weiter weil ich immer noch keine Ahnung hab wie ich auf die JList darin zugreifen kann.

Hab nen Button wodraufhin folgende Aktion ausgeführt werden soll:

jlistauftab.addElement(jlistgefuelltmitdbdaten.getModel().getElementAt(jlistgefuelltmitdbdaten.getselectedIndex()).toString());  //geht bestimmt irgendwie kürzer

also wenn mir jemand (ohne Verweis auf API was ich persönlich wenig hilfreich finde) helfen kann fänd ich das super..


----------



## zerix (27. November 2007)

Hallo,

ein Verweis auf die API ist schon hilfreich. Da kannst du dir nämlich anschauen wofür jede Methode ist. Es wird dort nämlich jede Methode erklärt.

Wenn du es realisiert hast wie in dem Beispiel von zeja ist es doch einfach. Schon mal was von Getter-/Setter-Methoden gehört?
Du müsstest nur die JList in einer Variablen speichern, diese kannst du dann über eine Getter-Methode nach außen verfügbar machen.


MFG

zEriX


----------



## matdacat (27. November 2007)

Mittels addTab hast Du doch bestimmte Komponenten in die JTabbedPane reingestopft., die werden als einzelne Tabs angezeigt. Nun liefert Dir getSelectedComponent die ausgewählte Komponente zurück. Wie Du jetzt von dieser auf Deine Listen zugreifen kannst, können wir Dir auch nicht sagen, da wir Deine Tab-Komponente nicht kennen - können Dir aber sagen, dass Du darin wohl eine Methode a la getList o.ä. einbauen wirst müssen.


----------



## mckruep (6. Dezember 2007)

Ja das wäre möglich wenn ich die vorher einfügen würde. Aber ich füg die ja zur Laufzeit ein. Somit helfen mir Getter/Setter Methoden leider nicht. Naja vielleicht find ich ja irgendwo in der API noch was ... Trotzdem danke.

(bin natürlich für weiter Hilfe immer noch zu haben  )


----------



## zeja (6. Dezember 2007)

Mal schnell zusammengeklickt.... Nicht schön aber das was du nicht hinkriegst geht immerhin.


----------



## zerix (7. Dezember 2007)

mckruep hat gesagt.:


> Ja das wäre möglich wenn ich die vorher einfügen würde. Aber ich füg die ja zur Laufzeit ein. Somit helfen mir Getter/Setter Methoden leider nicht. Naja vielleicht find ich ja irgendwo in der API noch was ... Trotzdem danke.
> 
> (bin natürlich für weiter Hilfe immer noch zu haben  )



Sicher können dir Getter und Setter-Methoden helfen. Auch wenn es dynamisch erzeugt wird. Du musst dir nur Gedanken machen, wie du es aufziehen musst.

MFG

zEriX


----------



## mckruep (7. Dezember 2007)

DANKE @ Zeja

Das ist mehr als Hilfreich vielen Dank!


----------

