Maison > Java > javaDidacticiel > Comment puis-je limiter la largeur de JLabel dans GroupLayout de Swing tout en conservant la réactivité au redimensionnement du cadre ?

Comment puis-je limiter la largeur de JLabel dans GroupLayout de Swing tout en conservant la réactivité au redimensionnement du cadre ?

Susan Sarandon
Libérer: 2024-12-10 10:10:16
original
400 Les gens l'ont consulté

How Can I Limit JLabel Width in Swing's GroupLayout While Maintaining Responsiveness to Frame Resizing?

Redimensionnement et limitation de la taille des composants dans Swing GroupLayout

GroupLayout de Swing offre une gestion flexible de la mise en page pour les interfaces utilisateur complexes. Cependant, contrôler la taille des composants au sein d'un GroupLayout peut s'avérer difficile lorsqu'il s'agit d'un redimensionnement dynamique. Cet article présentera une solution pour limiter la largeur maximale des étiquettes de composants dans un GroupLayout tout en conservant leur réactivité aux changements de taille de cadre.

Le problème

Envisagez un GroupLayout avec des groupes parallèles pour la disposition horizontale et un groupe séquentiel pour la disposition verticale, comme suit :

*-----------------------------------------------*
| label A     |   field A                       | 
| label B     |   field B                       |
| label C     |   field C                       |
*-----------------------------------------------*
Copier après la connexion

La tâche est de limiter la largeur des étiquettes (instances de JLabel) à un tiers de la largeur du cadre tandis que le cadre peut être redimensionné.

Solution

1. S'appuyer sur la taille préférée

Au lieu de définir manuellement des contraintes de taille, GroupLayout peut utiliser la taille préférée des étiquettes. Les étiquettes ont une taille préférée par défaut qui s'adapte à leur contenu textuel. Par défaut, GroupLayout respecte ces tailles préférées pour le comportement de redimensionnement des composants.

2. GroupLayout Alignment

Pour justifier à droite les étiquettes, GroupLayout.Alignment.TRAILING peut être utilisé :

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))
);
Copier après la connexion

3. Exemple de code

Le code suivant démontre la mise en œuvre de cette solution :

public class GroupPanel 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 GroupPanel(int n) {
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal