Maison >Java >javaDidacticiel >Comment puis-je limiter la largeur maximale des étiquettes dans un formulaire géré par Swing GroupLayout à une fraction de la largeur du cadre parent lors de la gestion du redimensionnement ?

Comment puis-je limiter la largeur maximale des étiquettes dans un formulaire géré par Swing GroupLayout à une fraction de la largeur du cadre parent lors de la gestion du redimensionnement ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-15 02:25:08111parcourir

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 : Redimensionner et limiter la taille des composants

Question

Dans un formulaire de saisie de données généré dynamiquement et géré par GroupLayout de Swing, comment limiter la largeur maximale des étiquettes à une fraction spécifique de la largeur du cadre parent, tout en s'adaptant au redimensionnement événements ?

Réponse

Pour limiter efficacement la largeur de l'étiquette à l'aide de GroupLayout :

  • Exploitez la taille préférée de l'étiquette, qui s'adapte naturellement à la plus grande étiquette.
  • Fiez-vous au comportement par défaut des composants pour le redimensionnement.
  • Utilisez GroupLayout.Alignment.TRAILING pour justifier à droite les étiquettes si vous le souhaitez.

Exemple de code

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))
        );
    }
}

Dans cet exemple :

  • GroupLayout redimensionne efficacement les étiquettes sans intervention manuelle.
  • Les champs de texte sont redimensionnables, garantissant une utilisation optimale des espace.
  • Les étiquettes sont justifiées à droite grâce à l'alignement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn