LayoutManager GroupLayout an dem rechten Rand ausrichten

plammy

Bekanntes Mitglied
Hallo zusammen .. ich kämpfe seit Tagen mit dem Thema. Ich habe folges Problem:

Ich habe zwei JPanel, die Untereinander auf die rechte Seite im Fenster angeordnet sind. In dem ersten JPanel sind 4 Zeilen bestehend aus jeweils 1 JLabel gefolgt von 2 jTextfields. In dem zweiten JPanel sind 16 JLabels (jeweils eins pro Zeile ) gefolgt von jeweils 2 JTextfield wieder.

So.. Das Problem ist das sobald die Jlabels unterschiedliche Namen haben (bzw verschiedene Textlänge) richten sich die JTextfield danach und alles sieht voll verschoben. Die JTextfield sollen sich schön untereinander anordnen und an der rechten Rend ausgerichtet werden und nicht an dem JLabels.

Hier den Codeausschnitt für den ersten JPanel (Für den zweiten ist eh quasi dasselbe):

Code:
jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()     
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(wrapper)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(w_wrapper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(h_wrapper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(header)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(w_header, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(h_header, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(content)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(w_content, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(h_content, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))    
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(footer)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(w_footer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(h_footer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22)))
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(wrapper)
                    .addComponent(w_wrapper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(h_wrapper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(header)
                    .addComponent(w_header, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(h_header, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(content)
                    .addComponent(w_content, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(h_content, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(footer)
                    .addComponent(w_footer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(h_footer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 22))
                .addContainerGap(50, Short.MAX_VALUE)) //Abstand zwischen beide Panels
        );

Hab ein Bild angehängt wie doof das grade aussieht 🙁

Vielen Dank für die Feedbacks :applaus:
 

Anhänge

  • lyout.PNG
    lyout.PNG
    4,2 KB · Aufrufe: 20
hast du diesen Monster-Code selber eingetippt oder zusammenkopiert?
wenn es ein GUI-Builder macht, sollte der doch sowas können,
selber könnst du mit einfachen Layouts 90% reine Zeichenanzahl einsparen..
(edit: oder 99%, wenn das nichtmal alles ist, sondern nur ein Ausschnitt..)

vielleicht reicht es aber auf die Schnelle, allen Label eine gewisse Größe mit setPreferredSize()/ Size/ MinimumSize vorzugeben?
 

Neue Themen


Zurück
Oben