Question

Je suis en train de construire une fenêtre GUI dans mon application. Ce que je suis en train de faire est d'avoir une fenêtre, avec quelques boutons en haut, et une grande zone de texte. Quelque chose comme ceci:

+--------------------------------------------------+
| [button1] [button2]                    [button3] |
| +----------------------------------------------+ |
| | text area                                    | |
| |                                              | |
| |                                              | |
| |                                              | |
| +----------------------------------------------+ |
+--------------------------------------------------+

Je suis presque, en utilisant GroupLayout:

  layout.setHorizontalGroup(
    layout.createParallelGroup()
      .addGroup(layout.createSequentialGroup()
        .addComponent(button1)
        .addComponent(button2))
        .addComponent(closeWindow))
      .addComponent(textarea1)
  );

  layout.setVerticalGroup(
    layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup()
        .addComponent(button1)
        .addComponent(button2)
        .addComponent(button3))
      .addComponent(textarea)
  );

Le problème est que cela finit avec button3 aligné sur la gauche, avec les deux autres. Je ne peux pas sembler comprendre comment je peux spécifier l'alignement sur ce seul bouton. Je peux faire GroupLayout.Alignment.TRAILING sur la barre de boutons ensemble, mais qui frappe tous les 3 boutons, ce qui est pas non plus tout à fait raison.

Alors, quelle est la bonne approche? Étant donné que l'alignement applique uniquement pour les groupes parallèles, je ne pense pas avoir un HorizontalGroup avec deux groupes séquentiels en elle contribuera?

Qu'est-ce que je manque?

Était-ce utile?

La solution

Ajoutez un vide dans votre groupe séquentiel. En quittant votre groupe horizontal est:

layout.setVerticalGroup(
    layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup()
        .addComponent(button1)
        .addComponent(button2)
        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addComponent(button3))
      .addComponent(textarea)
  );

L'écart avec ces paramters agit comme un « printemps », en prenant tout l'espace disponible.

Autres conseils

Essayez d'ajouter:

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 1, Short.MAX_VALUE)

après le second bouton. Le MAX_VALUE entraînera l'écart d'élargir autant que nécessaire.

Vous voulez utiliser addPreferredGap () qui est disponible uniquement sur les groupes séquentiels. Le code ci-dessous vous donne la disposition souhaitée.

    layout.setHorizontalGroup(
            layout.createParallelGroup()
                    .addGroup( layout.createSequentialGroup()
                            .addComponent( button1 )
                            .addComponent( button2 )
                            .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE )
                            .addComponent( button3 ) )
                    .addComponent( textArea )
    );
    layout.setVerticalGroup(
            layout.createSequentialGroup()
                    .addGroup( layout.createParallelGroup()
                            .addComponent( button1 )
                            .addComponent( button2 )
                            .addComponent( button3 ) )
                    .addComponent( textArea )
    );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top