Question

J'utilise swing GroupLayout et je suis confus au sujet des valeurs GroupLayout.DEFAULT_SIZE et GroupLayout.PREFERRED_SIZE. Je ne sais jamais quand utiliser chacun d'entre eux dans des méthodes telles que GroupLayout.addComponent(Component, int, int, int).

Je suppose que ce code:

GroupLayout l = ...;

l.setHorizontalGroup(l.createSequentialGroup()
    .addComponent(tf1)
    .addComponent(tf2));

l.setVerticalGroup(l.createParallelGroup()
    .addComponent(tf1)
    .addComponent(tf2));

il y a deux JTextFields sur une seule ligne aménagé avec GroupLayout (un groupe séquentiel horizontalement et un groupe parallèle verticalement). si je redimensionnez la fenêtre maintenant, les deux composants obtenir l'espace disponible (50% chacun). mais je ne veux que le premier champ de texte pour grandir / rétrécir horizontalement et seulement le deuxième champ de texte pour développer / rétrécir verticalement. Quelles sont les valeurs de min , pref et max dois-je utiliser pour y parvenir? Je sais que je peux juste essayer et voir quelle combinaison fonctionne, mais je voudrais connaître le raisonnement derrière ce problème.

Était-ce utile?

La solution

Des indications peuvent être trouvées dans Comment utilisation GroupLayout: la taille des composants et redimensionnabilité . En ce qui concerne DEFAULT_SIZE et PREFERRED_SIZE,

  

Ils peuvent être utilisés comme paramètres dans la méthode

 addComponent(Component comp, int min, int pref, int max)
  

Pour forcer un composant à redimensionnable (rétrécissement et permettre de plus en plus):

 group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  

Cela permet au composant de redimensionner la taille entre zéro (minimum) à toutes les tailles (Short.MAX_VALUE que la taille maximale signifie « infini »). Si nous voulions que le composant ne se rétrécir en dessous de sa taille minimale par défaut, nous utiliserions GroupLayout.DEFAULT_SIZE au lieu de 0 dans le second paramètre.

     

Pour une taille fixe le composant (supprimer le redimensionnement):

 group.addComponent(component, GroupLayout.PREFERRED_SIZE,
     GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)...

Fait intéressant, les valeurs constantes sont négatives, donc ils ne peuvent pas être confondus avec des contraintes réelles.

Autres conseils

Je suis aussi confus au sujet de la façon dont GroupLayout.DEFAULT_SIZE et GroupLayout.PREFERRED_SIZE sont utilisés dans GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max), même après le référencement de la section GroupLayout des Java Tutoriels et un article intitulé java.net Apprendre à connaître GroupLayout, partie 1 .

Plonger dans le JDK 1.6.0_27 GroupLayout.javasource J'ai trouvé les réponses dans la classe ComponentSpring. A partir de ce que j'ai pu travailler ces règles:

Si une taille minimale est nécessaire:

  1. et la valeur de min fournie est non-négatif, cette valeur est renvoyée.
  2. autre si elle est PREFERRED_SIZE, nous suivons les règles de taille préférée.
  3. autre taille minimale du composant est retourné.

Si besoin est une taille préférée:

  1. et la valeur de pref fournie est non-négatif, cette valeur est renvoyée.
  2. autre si elle est DEFAULT_SIZE ou PREFERRED_SIZE, retour taille préférée du composant.

Si besoin est une taille maximale:

  1. et la valeur de max fournie est non-négatif, cette valeur est renvoyée.
  2. autre si elle est PREFERRED_SIZE, nous suivons les règles de taille préférée.
  3. autre de MaximumSize du composant est retourné.

Comme trashgod déjà noté, les définit sont négatifs. Toute autre valeur négative pour min, max pref et en plus DEFAULT_SIZE ou PREFERRED_SIZE sont des erreurs et affirme frappé.

L'interaction entre les SequentialGroup.addComponent min, pref et tailles max n'a pas été immédiatement évident pour moi du tutoriel. Maintenant, je sais pourquoi PREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZE est fixé, pourquoi il n'a pas d'importance si l'argument du milieu est DEFAULT_SIZE ou PREFERRED_SIZE et comment les NetBeans générés des valeurs de taille fixe, comme le travail de DEFAULT_SIZE,300,Short.MAX_VALUE.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top