Heim >Java >javaLernprogramm >Wie kann ich die maximale Breite von Beschriftungen in einem von Swing GroupLayout verwalteten Formular auf einen Bruchteil der Breite des übergeordneten Rahmens beschränken, während ich die Größe ändere?

Wie kann ich die maximale Breite von Beschriftungen in einem von Swing GroupLayout verwalteten Formular auf einen Bruchteil der Breite des übergeordneten Rahmens beschränken, während ich die Größe ändere?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 02:25:08109Durchsuche

How can I limit the maximum width of labels in a Swing GroupLayout-managed form to a fraction of the parent frame's width while handling resizing?

Swing GroupLayout: Größenänderung und Begrenzung der Komponentengrößen

Frage

Wie kann man in einem dynamisch generierten Dateneingabeformular, das von Swings GroupLayout verwaltet wird, die einschränken? Die maximale Breite der Beschriftungen wird auf einen bestimmten Bruchteil der Breite des übergeordneten Rahmens festgelegt und gleichzeitig an die Größenänderung angepasst Ereignisse?

Antwort

So begrenzen Sie die Etikettenbreite mithilfe von GroupLayout effektiv:

  • Nutzen Sie die bevorzugte Größe des Etiketts, die natürlich auch das größte Etikett aufnimmt.
  • Verlassen Sie sich bei der Größenänderung auf das Standardverhalten von Komponenten.
  • Verwenden Sie GroupLayout.Alignment.TRAILING, um die Beschriftungen bei Bedarf rechtsbündig auszurichten.

Beispielcode

import javax.swing.GroupLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class LabelWidthLimitPanel extends JPanel {

    private JLabel label1 = new JLabel("Primary:");
    private JTextField field1 = new JTextField(16);
    private JLabel label2 = new JLabel("Secondary:");
    private JTextField field2 = new JTextField(16);
    private JLabel label3 = new JLabel("Tertiary:");
    private JTextField field3 = new JTextField(16);

    public LabelWidthLimitPanel() {
        GroupLayout layout = new GroupLayout(this);          
        this.setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        layout.setHorizontalGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                .addComponent(label1)
                .addComponent(label2)
                .addComponent(label3))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addComponent(field1)
                .addComponent(field2)
                .addComponent(field3))
        );
        layout.setVerticalGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                .addComponent(label1)
                .addComponent(field1))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                .addComponent(label2)
                .addComponent(field2))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                .addComponent(label3)
                .addComponent(field3))
        );
    }
}

In diesem Beispiel:

  • GroupLayout ändert effektiv die Größe die Beschriftungen ohne manuellen Eingriff.
  • Die Größe der Textfelder ist veränderbar, um eine optimale Nutzung zu gewährleisten Leerzeichen.
  • Die Beschriftungen werden durch Ausrichtung rechtsbündig ausgerichtet.

Das obige ist der detaillierte Inhalt vonWie kann ich die maximale Breite von Beschriftungen in einem von Swing GroupLayout verwalteten Formular auf einen Bruchteil der Breite des übergeordneten Rahmens beschränken, während ich die Größe ändere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn