Taille de l'ensemble de JLabel dans FlowLayout
J'ai un Composite qui utilise FlowLayout. - Je ajouter un certain nombre de JLabels pour le Composite, utilisez setPreferedSize() pour ajuster leur taille et de les enregistrer dans une liste, label_list. Tout fonctionne très bien. Alors je veux changer leur taille:
for(JLabel c:label_list){
c.setPreferedSize(new Dimension(10,10));
}
Et ça ne fonctionne pas.
c.setBackground(Color.red)
et les trucs similaires œuvres. Pourquoi ne puis-je pas utiliser setPreferedSize ici?
c.setBounds(1,1,10,10) et c.setSize(10,10)
Fonctionne, mais après je l'ai mise à jour de l'INTERFACE utilisateur (resizeing le panneau) chaque taille va revenir à la normale.
Avez-vous demandé que le conteneur de la re-mise en page du contenu? Essayez d'invalider, revlidate & repaint (ou des combinaisons de)
n'utilisez pas de setXXSize, jamais. Quelques raisons: stackoverflow.com/questions/7229226/.... Au lieu de choisir un LayoutManager qui prend en charge vos besoins.
n'utilisez pas de setXXSize, jamais. Quelques raisons: stackoverflow.com/questions/7229226/.... Au lieu de choisir un LayoutManager qui prend en charge vos besoins.
OriginalL'auteur user1506145 | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
revalidate()
sur le parent des étiquettes afin qu'il effectue à nouveau mise en page et applique leur taille préférée.Réglage des limites de taille, ou manuellement l'emplacement de conflits avec le LayoutManager du conteneur parent. Le travail de la LayoutManager est de la position et de la taille de l'enfant composants.
Définir la mise en page de
null
et vous appelez setSize-setLocation/setBounds, ou utiliser un LayoutManager (recommandé) et de ne jamais appeler setSize-setLocation/setBounds. Tout au plus, vous pouvez appeler setPreferred/setMaximum/setMinimum taille, mais essayez d'éviter ce qu'il peut causes de la croix de L&F problèmes.OriginalL'auteur Guillaume Polet