Dynamisches generieren und ausrichten von Komponenten

Status
Nicht offen für weitere Antworten.

mororu

Mitglied
Hallo zusammen

Ich bin nun seit 2 Tagen wie wild zu versuchen dynamisch Textfelder und Komboboxen in ein Panel zu erzeugen und diese noch schön auszurichten. Aber ich krieg die Krise! Es will mir einfach nicht schön gelingen.

Also es geht darum: Ich habe auf meinem JFrame ein Panel. Über ein Button auf dem Frame soll in diesem Panel dynamisch Komponenten erstellt werden. Und zwar sollte bei jedem Klick auf den Button, in einer Reihe, ein JTextField eine JComboBox und wieder ein JTextField erstellt werden.

Ich habe nun meinen Code soweit, dass die Komponenten erstellt werden, aber beim zweiten Klick, verteilt mir der Layout Manager die neuen Panels auf das ganze untere Panel. Wie umgehe ich das? Ich möchte ja eigentlich nur, dass das erste Sub-Panel zuoberst, das zweite gleich darunter usw. erstellt wird.

Hier mal mein jetziger Code:

Java:
JPanel pnlIngredient = new JPanel();
        pnlIngredient.setLayout(new FlowLayout());
        pnlIngredient.setSize(600, 30);
        pnlIngredient.add(new JTextField());
        pnlIngredient.add(new JComboBox());
        pnlIngredient.add(new JTextField());
        this.pnlZutaten.setLayout(new BoxLayout(pnlZutaten, WIDTH));
        this.pnlZutaten.add(pnlIngredient);
        this.validate();

Wäre riesig dankbar für jegliche Tipps.
 

0x7F800000

Top Contributor
Ich habe nun meinen Code soweit, dass die Komponenten erstellt werden, aber beim zweiten Klick, verteilt mir der Layout Manager die neuen Panels auf das ganze untere Panel.
Das versteh ich nicht. Was kleines kompilierbares wäre hilfreich.

Java:
JPanel pnlIngredient = new JPanel();
        pnlIngredient.setLayout(new FlowLayout()); //wäre da GridLayout(1,3) nicht angebrachter?
        pnlIngredient.setSize(600, 30); //die methode ist für die Layout-Manager, nicht für Menschen! Sowas sollte man nicht explizit aufrufen
        pnlIngredient.add(new JTextField());
        pnlIngredient.add(new JComboBox());
        pnlIngredient.add(new JTextField());
        this.pnlZutaten.setLayout(new BoxLayout(pnlZutaten, WIDTH)); //Was ist das? Wieso wird das bei jedem klick neugemacht?
        this.pnlZutaten.add(pnlIngredient);
        this.validate();
 

mororu

Mitglied
Nun ein Ausführbares Projekt kann ich grad so einfach nicht bieten, da es recht umfangreich ist. Also ich muss zu meinem Code sagen, das ist nur ein Versuch, welcher mich so in die Richtung der Lösung gebracht hat. Es muss überhaupt nicht so realisiert werden!

Ich bin was die LayoutManager angeht noch nicht sehr bewandt. Ich tue mich damit noch enorm schwer.

Also sollte ich die ganze Problematik mit einem GridLayout ausprobieren?
 

mororu

Mitglied
Also ich habe von meinem Problem mal ein printscreen gemacht. Da sieht man mein Zutaten Panel, wenn ich nun auf den Knopf unterhalb klicke, sollte ein JTextField, eine JComboBox und noch ein JTextField erstellt werden und zwar in einer Linie. Nun sieht man was passiert, wenn man zweimal den Knopf drückt. Die Elemente werden in der Höhe über das gesammte Panel verteilt. Drücke ich ein drittes mal auf den Knopf verteilen sich die Elemente wieder auf den vorhandenen Platz (2. Bild).

Wie mache ich nun, dass die neuen Elemente zuoberst, dann die nächsten gleich darunter erstellt werden? Ohne sich auf die gesammte Höhe des unteren Panels verteilt zu werden?

Ich hoffe so ist es nun klarer.
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Ja gut, wenn du nicht willst dass es gestreckt wird, dann mach doch den BoxLayout weg, wenn es dir nicht gefällt. Wenn man die bevorzugte Breite und höhe von einzelnen Zutaten-Panels anpasst, müsste es mit dem Flow-Layout eigentlich schon etwas besser aussehen, allerdings erscheint's mir keine langfristig gute Lösung zu sein: man braucht da eher etwas zum rumscrollen, man weiß ja nie, wieviele Zutaten es werden können.
 

mororu

Mitglied
Ja das stimmt, es kann x-Zutaten geben. Was würdest du an meiner Stelle verwenden. Am Schluss sollte man ja in die 3 Felder folgendes eingeben können. 1. Feld Menge, 2. die Einheit (ml, g usw.) und im 3. Feld dann die Zutat.

Welche Komponente wäre besser dafür geeignet als ein Panel, um neue Elemente aufnehmen zu können? Oder besser gefragt gibt es ein Container der Scrollbar ist?
 

mororu

Mitglied
Ok, hab ich nun gefunden, aber wie erstelle ich nun in dieses ScrollPane neue Komponenten. Irgendwie klappt das mit meinem Code nicht, wenn ich anstelle ins Panel das ScrollPane angebe. Muss ich da zuerst noch was spezielles erstellen im ScrollPane?
 

mororu

Mitglied
Ah, habs Problem gefunden. Mein Panel im ScrollPane hatte noch den falschen LayoutManager gesetzt.

Kennt jemand ein gutes Tutorial, bei welchem man lernt, wie und wo man welchen LayoutManagere verwendet. Ich finde das enorm verwirrend das ganze!
 

mororu

Mitglied
Ah super, genau sowas habe ich gesucht. Da kriegt man nun mal eine Übersicht welcher Layout Manager wie ausrichtet.

Übrigens habe ich nun mein Problem folgendermassen gelöst:

Java:
JPanel pnlNew = new JPanel();
       pnlNew.setLayout(new FlowLayout());
       JTextField txtMenge = new JTextField(5);
       JTextField txtZutat = new JTextField(10);
       JComboBox cmbEinheit = new JComboBox();

       cmbEinheit.addItem("ml"); 
       cmbEinheit.addItem("g");

       menge.add(txtMenge); // menge ist eine ArrayList<JTextField>
       pnlNew.add(txtMenge);

       einheit.add(cmbEinheit); // einheit ist eine ArrayList<JComboBox>
       pnlNew.add(cmbEinheit);

       zutat.add(txtZutat); // zutat ist eine ArrayList<JTextField>
       pnlNew.add(txtZutat);

       this.jPanel2.add(pnlNew, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, this.yPosition, 400, 35));
       this.yPosition += 35;
       validate();

Und der Container ist nun ein ScrollPane. Ist vielleicht nicht die schönste Lösung, ergibt aber das gewünschte Resultat. Danke für eure Tipps.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
D Swing Dynamisches Dialog UI AWT, Swing, JavaFX & SWT 8
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
T dynamisches Koordinatenkreuz mit scalierung AWT, Swing, JavaFX & SWT 7
C Scollpane an dynamisches GridLayout anpassen? AWT, Swing, JavaFX & SWT 3
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
N Swing Dynamisches Verhalten bei Änderung Fenstergröße AWT, Swing, JavaFX & SWT 6
trash Dynamisches Interface AWT, Swing, JavaFX & SWT 6
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3
T Swing Dynamisches Bild AWT, Swing, JavaFX & SWT 8
T RCP-SWT dynamisches ScrolledComposite AWT, Swing, JavaFX & SWT 2
B dynamisches Spektrogramm in Java-Webanwendung AWT, Swing, JavaFX & SWT 3
G LookAndFeel Dynamisches Einlesen von LookAndFeels - NullPointerException AWT, Swing, JavaFX & SWT 4
T Dynamisches hinzufügen und entfernen von Bildern AWT, Swing, JavaFX & SWT 3
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
J Dynamisches füllen von GridBagLayout: Größe der Komponenten AWT, Swing, JavaFX & SWT 4
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
L Dynamisches Erzeugen eines Button AWT, Swing, JavaFX & SWT 2
M Schwieriges Label - Font - Problem "Dynamisches Label&a AWT, Swing, JavaFX & SWT 7
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
H LayoutManager RPG Programmieren, eigenes Spielfeld grafisch generieren aus Tileset AWT, Swing, JavaFX & SWT 18
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
U Swing Buttons generieren AWT, Swing, JavaFX & SWT 19
A AWT Nach dem generieren von bildern verschwinden diese wieder AWT, Swing, JavaFX & SWT 9
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
L ID für GUI Elemente generieren AWT, Swing, JavaFX & SWT 11
S SWT Bei Auslösen eines Buttones ein Textfeld generieren AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
D AWT Netzwerkadresse generieren! Help?! AWT, Swing, JavaFX & SWT 35
X Video's aus JPG's oder BufferedImages generieren AWT, Swing, JavaFX & SWT 3
P Formular mit n-Textfeldern generieren AWT, Swing, JavaFX & SWT 7
O Fensterinhalt löschen und neu generieren AWT, Swing, JavaFX & SWT 2
G Mousecursor selber dynamisch generieren. AWT, Swing, JavaFX & SWT 6
F Bildleiste generieren AWT, Swing, JavaFX & SWT 2
M JLabel ausrichten AWT, Swing, JavaFX & SWT 2
B JCheckBox ausrichten ? AWT, Swing, JavaFX & SWT 1
G JavaFX CSS: Label in GridPane rechts ausrichten AWT, Swing, JavaFX & SWT 9
J jTextFields ausrichten AWT, Swing, JavaFX & SWT 5
D JLabel Image ausrichten AWT, Swing, JavaFX & SWT 2
R Swing Wie kann man Internal Frames automatisch ausrichten lassen? AWT, Swing, JavaFX & SWT 3
P LayoutManager GroupLayout an dem rechten Rand ausrichten AWT, Swing, JavaFX & SWT 2
E Seitenabstand ausrichten JLabel AWT, Swing, JavaFX & SWT 2
S Fenster an bestehendem Fenster ausrichten AWT, Swing, JavaFX & SWT 6
T Inhalt von einem Tab an JTabbedPane größe ausrichten? AWT, Swing, JavaFX & SWT 2
K richtiges Ausrichten mehrerer Labels AWT, Swing, JavaFX & SWT 3
A Swing Box Label ausrichten AWT, Swing, JavaFX & SWT 3
P Swing JLabel Text nach Links ausrichten klappt nicht AWT, Swing, JavaFX & SWT 3
E 2D-Grafik Text an Kreispfad ausrichten AWT, Swing, JavaFX & SWT 2
K Links ausrichten AWT, Swing, JavaFX & SWT 5
T LayoutManager Panel in Scrollpane mittig ausrichten AWT, Swing, JavaFX & SWT 2
T Swing JSplitPane Componenten ausrichten AWT, Swing, JavaFX & SWT 4
E JToolBar ausrichten AWT, Swing, JavaFX & SWT 2
data89 Button(s) vertikal mittig in JPanel ausrichten AWT, Swing, JavaFX & SWT 7
D JTextArea rechtsbündig ausrichten ? AWT, Swing, JavaFX & SWT 3
C JScrollPane immer ganz unten ausrichten AWT, Swing, JavaFX & SWT 17
I JDialog relativ zum Parent ausrichten AWT, Swing, JavaFX & SWT 4
M Hallo Herr Uhres, Frage zu DND_Demo: Ausrichten der Panels:) AWT, Swing, JavaFX & SWT 4
P JEditorPane mit HTMLEditorKit Text ausrichten AWT, Swing, JavaFX & SWT 2
G Bündig Ausrichten? AWT, Swing, JavaFX & SWT 11
vogella JLabel - Ausrichten von Text AWT, Swing, JavaFX & SWT 3
frankred SWT Elemente ausrichten AWT, Swing, JavaFX & SWT 9
C TableHeader in JTable ausrichten ? AWT, Swing, JavaFX & SWT 2
J GUI Komponenten ausrichten? AWT, Swing, JavaFX & SWT 2
E JFrame ausrichten AWT, Swing, JavaFX & SWT 2
L JList ausrichten funktioniert nicht AWT, Swing, JavaFX & SWT 6
B BorderLayout/JSplitPane Problem beim Ausrichten AWT, Swing, JavaFX & SWT 5
J GridBagLayout JLabels links ausrichten + vertikaler Freiraum AWT, Swing, JavaFX & SWT 4
A Komponenten in JTree ausrichten AWT, Swing, JavaFX & SWT 2
F GridLayout horizontal ausrichten AWT, Swing, JavaFX & SWT 6
Landei Labels in Box linksbündig ausrichten AWT, Swing, JavaFX & SWT 15
V SWT: Label vertikal ausrichten AWT, Swing, JavaFX & SWT 11
A JLabel links ausrichten AWT, Swing, JavaFX & SWT 4
TRunKX JTextField will sich nicht richtig ausrichten. AWT, Swing, JavaFX & SWT 2
G Komponenten ausrichten unter Swing AWT, Swing, JavaFX & SWT 7
G Schrift vertikal ausrichten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben