Les contraintes que vous indiquez peuvent devenir invalides. Par exemple,
si vous ajoutez une contrainte indiquant que le noeud
A
doit
être sur le côte gauche du noeud B
, mais que vous
supprimez A
du graphe, cette contrainte devient
non valide. Elle n'a tout simplement plus aucun sens, même si
elle n'est pas en conflit avec d'autres contraintes. L'instance d'agencement
supprime automatiquement les contraintes non valides de temps en temps car
elles gaspillent de la mémoire. Le contrôle de validation est effectué au cours de l'agencement. Il n'est généralement pas nécessaire de forcer une validation mais si vous souhaitez le faire, appelez : layout.validateConstraints();
Cette opération supprime tous les contraintes non valides de l'agencement hiérarchique et nettoie la mémoire. La validation de contrainte ne vérifie pas si les contraintes ont des conflits. Le principal effet de la validation est que le système de contrainte utilise ensuite moins de mémoire.
Note
Une contrainte est valide si elle a un sens. Deux
contraintes valides sont en conflit si le système ne peut pas les satisfaire toutes les deux en même temps. Les contraintes non valides ne peuvent pas être en conflit car elles n'ont pas de sens.
En fait, la validation de contrainte et la résolution de contraintes constituent des
phases différentes. La validation de contrainte effectue un test local rapide. Elle supprime complètement les contraintes non valides de l'instance d'agencement.
Elle n'a aucune incidence sur les contraintes en conflit.
La résolution de contraintes vérifie si des contraintes valides
sont en conflit entre elles. De fait, la résolution de contraintes est
processus complexe dans un réseau de plusieurs contraintes connexes. Elle choisit
les contraintes qui peuvent être résolues et celles qui ne le peuvent pas.
Cependant, la résolution de contraintes ne supprime pas les contraintes en conflit
de l'instance d'agencement, elle fournit une solution qui permet d'ignorer certaines
contraintes.