2010-06-20 4 views
0

j'initialiser un JLabel dans le cadre de Java comme ceci:Comment réinitialiser les contraintes JLabel après l'avoir initialisé?

contentPane.add(myLabel, cc.xywh(1, 1, 31, 6, CellConstraints.DEFAULT, CellConstraints.BOTTOM)); 

Mais avant de montrer le JFrame je fais une petite condition qui si le rendement vrai que je veux mettre en MyLabel être réglé sur DEFAULT au lieu de fond, mais je peux « t trouver de toute façon, sauf redéfinir à nouveau comme ceci:

contentPane.add(myLabel, cc.xywh(1, 1, 31, 6)); 

Ainsi est-il une meilleure façon de modifier simplement la propriété position verticale?

+0

Quelle est votre disposition sur le contentPane? – Istao

Répondre

1

En supposant que vous utilisez un jgoodies FormLayout, vous êtes quelque peu limité dans la réutilisation de vos instances CellConstraints. Il apparaît de la documentation et des exemples que chaque composant est ajouté au panneau et que les instances CellConstraints sont copiées. En outre, lors de la tentative de collecte des contraintes pour le composant en cours, une copie du CellConstraints est renvoyée. Cependant, vous avez une option: vous pouvez prendre cette copie du CellConstraints, modifier l'instance publique vAlign var puis appeler setConstraints sur votre FormLayout avec ce jeu de contraintes mis à jour.

FormLayout layout = (FormLayout)contentPane.getLayout(); 
cc = layout.getConstraints(myLabel); 
cc.vAlign = CellConstraints.DEFAULT; 
layout.setConstraints(myLabel, cc); 

Il est un peu plus bavard que le simple re-ajouter que vous avez fourni, mais il élimine la nécessité de maintenir les nombres magiques (1,1,31,6) dans votre instance d'origine.

+0

Exactement ce que j'essayais de faire ... Au lieu d'être limité aux coordonnées de la cellule (1,1,31,6) ... Merci beaucoup :) – Brad

Questions connexes