Swing CardLayout dynamisch erweitern

core_85

Mitglied
hallo,

ich habe folgendes Problem und zwar möchte ich ein CardLayout erzeugen, welches durch Nutzereingabe die Anzahl der Panels festsetzt und und das CardLayout erzeugt. Statisch funktioniert das ohne Probleme ,allerdings mit fester Anzahl
Java:
...

final JPanel pt1 = new JPanel();
pt1.add(new JLabel("Panel1"));
final JPanel pt2 = new JPanel();
pt2.add(new JLabel("Panel2"));
final JPanel pt3 = new JPanel();
pt3.add(new JLabel("Panel3"));

cardPanel.setLayout(c1);
	  cardPanel.add(pt1,"1");
	  cardPanel.add(pt2,"2");
	  cardPanel.add(pt3,"3");

...

zur dynamischen Umsetzung hatte ich folgenden Ansatz:

Java:
  final int max_panel = Integer.parseInt(Panel_GUI.frame_textfield.getText());
	   
	   final JPanel panel[] = new JPanel[max_panel];
	   final JLabel label[] = new JLabel[max_panel];
	   
	   /*Panel Komponente erstellen auf die jeweils dynamischen Panels*/
	   JLabel l2 = new JLabel("Frage?");
	   JTextField t2 = new JTextField(20);
	   JLabel l21 = new JLabel("Art der Antworten...");

 try {

			   
	   for(int i=1; i-1 < max_panel ; i++){
		   
		   System.out.println(i);
		   
		   panel[i] = new JPanel();
		   label[i] = new JLabel("Label" + i);
		   
		   panel[i].add(new JLabel("Label" + i));
		   panel[i].add(l2);
		   panel[i].add(t2);
		   panel[i].add(l21);
		   
		   
		   cardPanel.setLayout(c1);
		 		   
		  // cardPanel.add(panel[i], max_s);
		   
		   cardPanel.add(panel[i], Panel_GUI.frame_textfield.getText());
		   cardPanel.add(label[i]);
  		  
	   }
	 
	  } catch (Exception e) {
			e.getStackTrace();
		}

das Problem daran ist das nicht alle Panels erzeugt werden, sondern nur das erste und das letzte und das die swing Komponenten(JLabel, JTextffield,...) nur auf dem letzten Panel angezeigt werden.
Kann mir da jem weiterhelfen ?

mfg
 
S

SlaterB

Gast
> cardPanel.add(panel, Panel_GUI.frame_textfield.getText());

jedes Panel braucht einen eindeutigen Identifer, mehrere mit demselben hinzuzufügen, welchen Zweck soll das haben?

> cardPanel.add(label);

das CardPanel enthält Panel, was soll das Label dort? welchen Effekt zur Anzeige versprichst du dir davon?
die label gehören vielleicht auf die panel, allerdings erzeugst du dort eh schon gleiche?:

> label = new JLabel("Label" + i);
> panel.add(new JLabel("Label" + i));

------

> panel.add(l2);

ein Komponente kann nicht mehrfach verwendet werden,
wenn du mehrfach "Art der Antworten..." als Text brauchst, erstelle jeweils ein JLabel
 

core_85

Mitglied
hallo,

ja also folgendes:

> cardPanel.add(panel, Panel_GUI.frame_textfield.getText());

denke da liegt der Kern des Problems, den eindeutigen Identifer dynamisch zuzuweisen für jedes dynamisch erzeugte Panel in der for-Schleife. So das man z.B. 5 über textfeld eingibt, er über die for-Schleife 5 Panels erzeugt und jeden dann ID zuweist. Statt dem > getText() <
hatte ich es so probier:

Java:
 cardPanel.add(panel[i], "1");
 cardPanel.add(panel[i], "2");
 cardPanel.add(panel[i], "3");
 cardPanel.add(panel[i], "4");
 cardPanel.add(panel[i], "5");

leider wird da auch nur bei klicken der vor und zurück der buttons nur das erste und das letzte Panel angezeigt...

Zu der Sache mit den Labels zeigt nur an welches Panel vorhanden ist in dem ich es einfach beschrifte,was kein Problem ist.

Bei der Sache mit den Komponenten:
> panel.add(l2);
es geht ja quasi für das letzte Panel quasi also, geht er die forschleife in dem Fall ' 5' durch und haut alles auf das letzte drauf.. wo man wieder beim Problem der Zuweisung ist was, ob es da ne Möglichkeit gibt wenn ich weiß es gibt genau 5 es abzufragen und dann die Komponenten zuzuordnen
quasi dann in der Art wenn panel gleich 5 ... dann panel[1].add(Button1) usw.

Hoffe konnte es verständlich erklären.

mfg
 
S

SlaterB

Gast
die Sätzen waren besonders sprachlich schon unverständlich, da kam also nicht viel rüber

> So das man z.B. 5 über textfeld eingibt, er über die for-Schleife 5 Panels erzeugt und jeden dann ID zuweist.

noch mal ganz langsam, was soll dann die Folge sein? sollen 5 Panel erzeugt werden? mit welchen 5 unterschiedlichen Ids?
1-5? dann muss das auch gemacht werden und nicht für alle 5 die gleiche Id, nämlich "5" verwendet werden

> wo man wieder beim Problem der Zuweisung ist was, ob es da ne Möglichkeit gibt wenn ich weiß es gibt genau 5 es abzufragen und dann die Komponenten zuzuordnen

wie gesagt schon in deutscher Sprache kaum zu identifizieren, aber um das Thema warm zu halten den alten Kniff der Wiederholung:
keine Komponente kann in mehreren Panels drin sein, erstelle Kopien
 

core_85

Mitglied
hey,

er soll mir n Anzahl Panels erzeugen in einem CardLayout, wenn ich eine Zahl n eingebe im Textfeld.

Meinen Ansatz hatte ich ja gepostet mit Hilfe der for-Schleife. Und mein Problem ist, wenn ich über ein Eingabefeld eine z.B. 5 eingebe , sollte er mir 5 Panels erzeugen in einem CardLayout, aber ich erhalte zur Ansicht nur 2 Panels das erste Panel und das letzte Panel.

Jetzt die Frage ob man das so dynamisch lösen kann.

Statisch geht es ja alles ohne Probleme:

Java:
final JPanel pt1 = new JPanel();
final JPanel pt2 = new JPanel();
final JPanel pt3 = new JPanel();
final JPanel pt4 = new JPanel();
final JPanel pt5 = new JPanel();

cardPanel.setLayout(c1);
cardPanel.add(pt1,"1");
cardPanel.add(pt2,"2");
cardPanel.add(pt3,"3");
cardPanel.add(pt4,"4");
cardPanel.add(pt5,"5");

Vllt hilft es mal kompletten Code zu posten

mfg
 
S

SlaterB

Gast
wenn du "1" bis "5" als Keys verwenden willst dann tue das einfach,
nicht Panel_GUI.frame_textfield.getText() beim add, sondern z.B. String.valueOf(i)
 

bERt0r

Top Contributor
Du redest im Titel von CardLayout, in deinen geposteten Codeflicken ist davon aber weit und breit nichts zu sehen. Poste mal ein KSKB.
 
S

SlaterB

Gast
> cardPanel.setLayout(c1);

reicht nicht?
für mich sieht es im Moment deutlich aus,
was das erste + letzte Panel ist weiß ich allerdings auch nicht genau
 

bERt0r

Top Contributor
Du redest im Titel von CardLayout erweitern, in deinen geposteten Codeflicken ist davon aber weit und breit nichts zu sehen.:oops: Poste mal ein KSKB.

Ist vielleicht alles was du machen willst sowas:
Java:
List<JComponent> cards=new ArrayList<JComponent>();

//Pack ein paar components in die Liste

for(int i=0;i<cards.size();i++)
{
cardsPanel.add(card.get(i),String.valueOf(i));
}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
noch einmal der Erklärhut:
'CardLayout dynamisch erweitern' meint hier recht offensichtlich, zur Laufzeit per Button neue Cards hinzufügen,
dein Code passt ja auch dazu, also angekommen
 

core_85

Mitglied
hallo,

es sind 2 unterschiedlich Probleme gewesen, deswegen war die Formulieren vllt etwas unglücklich.
das mit dynamischen Panels erzeugen klappt jetzt gut, nur leider gibt es noch Probleme darauf swing Komponente zu erzeugen da er die bei

Java:
...
panel[i].add(Button1);
...

immer auf das letzte Panel gesetzt wird ... aber trotzdem danke für die hilfe

mfg
 
S

SlaterB

Gast
> immer auf das letzte Panel gesetzt wird ... aber trotzdem danke für die hilfe

habe ich ja auch erst 2x erklärt..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Von Menü: Seite zu Seite springen (CardLayout) AWT, Swing, JavaFX & SWT 8
H CardLayout beschränken AWT, Swing, JavaFX & SWT 2
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L Java- CardLayout AWT, Swing, JavaFX & SWT 10
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
A Swing CardLayout - kein Wechsel möglich AWT, Swing, JavaFX & SWT 5
J CardLayout AWT, Swing, JavaFX & SWT 3
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
padde479 LayoutManager CardLayout wechselt die Karten nicht AWT, Swing, JavaFX & SWT 5
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
F CardLayout.show() funktioniert teilweise nicht AWT, Swing, JavaFX & SWT 5
F Swing Cardlayout aufräumen AWT, Swing, JavaFX & SWT 4
U CardLayout im Applet AWT, Swing, JavaFX & SWT 4
Q CardLayout und Klassenmethodenzugriff AWT, Swing, JavaFX & SWT 11
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
C CardLayout in BorderLayout? AWT, Swing, JavaFX & SWT 36
W Swing Probleme mit CardLayout AWT, Swing, JavaFX & SWT 28
D JMenuBar - CardLayout (Klasse anzeigen) AWT, Swing, JavaFX & SWT 3
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
S LayoutManager Card des CardLayout mit MenuItem auswaehlen AWT, Swing, JavaFX & SWT 9
B RootPane bzw CardLayout Transparent machen AWT, Swing, JavaFX & SWT 7
L CardLayout - Show klappt nicht AWT, Swing, JavaFX & SWT 7
D Richtige implimentierung eines CardLayout AWT, Swing, JavaFX & SWT 3
P CardLayout - Anzeigeproblem AWT, Swing, JavaFX & SWT 2
I LayoutManager CardLayout mit anonymen Components AWT, Swing, JavaFX & SWT 4
Private Void LayoutManager Cardwechsel im CardLayout auch von Card aus? AWT, Swing, JavaFX & SWT 6
E LayoutManager Erster Versuch mit Cardlayout AWT, Swing, JavaFX & SWT 2
hdi LayoutManager Problem mit CardLayout AWT, Swing, JavaFX & SWT 11
C Problem mit CardLayout :( AWT, Swing, JavaFX & SWT 10
Dragonfire Swing CardLayout Maximum Size AWT, Swing, JavaFX & SWT 7
klattiator CardLayout - Cards auf Existenz prüfen AWT, Swing, JavaFX & SWT 3
S Frage/Problem CardLayout AWT, Swing, JavaFX & SWT 2
H CardLayout - Card erstellen hinzufügen usw. bis MI (12.3.) AWT, Swing, JavaFX & SWT 2
F CardLayout.show() -> NullPointerException AWT, Swing, JavaFX & SWT 4
G CARDLAYOUT AWT, Swing, JavaFX & SWT 2
D GroupLayout an un plötzlich is CardLayout Funktion tot? AWT, Swing, JavaFX & SWT 10
J CardLayout AWT, Swing, JavaFX & SWT 10
J CardLayout AWT, Swing, JavaFX & SWT 2
J Hilfe CardLayout AWT, Swing, JavaFX & SWT 3
H Cardlayout AWT, Swing, JavaFX & SWT 3
M CardLayout: Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Dialogfenster wird nicht aktualisiert/CardLayout AWT, Swing, JavaFX & SWT 6
m@nu StackOverflowError mit CardLayout? AWT, Swing, JavaFX & SWT 2
R CardLayout bei einem Quiz AWT, Swing, JavaFX & SWT 9
J Designfehler beim CardLayout() AWT, Swing, JavaFX & SWT 4
S Registerkarte mit CardLayout (AWT) erstellen ? AWT, Swing, JavaFX & SWT 6
D CardLayout Plus ? AWT, Swing, JavaFX & SWT 4
T CardLayout Ohne Cards/Reiter AWT, Swing, JavaFX & SWT 2
W JavaFX Farben dynamisch anpassen AWT, Swing, JavaFX & SWT 4
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
A Swing JPanels dynamisch untereinander einfügen AWT, Swing, JavaFX & SWT 3
Wurstsemmel SWT MenuItem dynamisch hinzufügen AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
S CombinedDomainXYPlot und dynamisch hinzugefügte subplots: Darstellungsprobleme AWT, Swing, JavaFX & SWT 3
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
llabusch JavaFX Dynamisch alles vergrößern (wie im Browser) AWT, Swing, JavaFX & SWT 3
agent47 JavaFX TreeView Struktur dynamisch einlesen AWT, Swing, JavaFX & SWT 1
D JavaFX Dynamisch erzeugte Buttons sollen Code ausführen. AWT, Swing, JavaFX & SWT 2
D JavaFX Dynamisch erzeugte Checkboxen aus VBox auslesen AWT, Swing, JavaFX & SWT 3
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
I JTable dynamisch aus ArrayList befüllen AWT, Swing, JavaFX & SWT 3
T JavaFX Flexible Layouts dynamisch erstellen / Design-Inspirationen AWT, Swing, JavaFX & SWT 8
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
T JPanel dynamisch erstellen AWT, Swing, JavaFX & SWT 4
G FormLayout dynamisch wachsend AWT, Swing, JavaFX & SWT 0
T JTable dynamisch mit ArrayList AWT, Swing, JavaFX & SWT 2
A Swing Logikaufgabe: Zeilenanzahl einer JTable mit 3d String dynamisch anpassen AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
P TableViewerColumn dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
A HELP: JFieldText dynamisch setzen -> langsam AWT, Swing, JavaFX & SWT 19
B Link eines Icons dynamisch gestalten AWT, Swing, JavaFX & SWT 2
P ScrollPane nach zeichnen dynamisch resize AWT, Swing, JavaFX & SWT 7
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
P Gifs dynamisch auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E Breite eines JButton dynamisch ändern AWT, Swing, JavaFX & SWT 3
P Swing Dynamisch zeichnen mit Shapes wie Rectangle2D.Float ? AWT, Swing, JavaFX & SWT 6
C SWT - widget dynamisch erzeugen und anzeigen AWT, Swing, JavaFX & SWT 10
C Tooltip dynamisch setzen AWT, Swing, JavaFX & SWT 7
T Elemente zu JList dynamisch hinzufügen AWT, Swing, JavaFX & SWT 4
X jTextFields dynamisch initialisieren AWT, Swing, JavaFX & SWT 2
A Swing Dynamisch Objekte erzeugen AWT, Swing, JavaFX & SWT 3
L Label dynamisch awt AWT, Swing, JavaFX & SWT 2
H Swing Symbol in Taskleiste dynamisch aus- bzw. einblenden AWT, Swing, JavaFX & SWT 14
B JTabbedPane mit Enumeration dynamisch füllen AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
D Panels Dynamisch zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 2
J Java 2D - dynamisch zeichnen AWT, Swing, JavaFX & SWT 4
A AWT HSB-Farben dynamisch berechnen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben