Dynamisch JPanels mit Inhalt erstellen

mckruep

Mitglied
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ß
 
Du erstellst eine Klasse die JPanel erweitert:
Java:
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 :
Java:
meinTabContainer.addTab("Tabname", new DeinPanel() ) ;
 
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ß
 
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!!
 

Anhänge

  • Oberflaeche.jpg
    Oberflaeche.jpg
    13,6 KB · Aufrufe: 347
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 :confused:
 
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
 
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..
 
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
 
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.
 
Zurück