2012-11-29 5 views
0

Qu'est-ce que je fais mal? layers est un JPanel. J'essaye d'ajouter le JLabel ci-dessous au JPanel, mais rien ne se produit. J'ai essayé d'ajouter repaint() au panneau mais cela ne fait rien non plus. Qu'est-ce que je ne fais pas?JLabel n'est pas ajouté à un JPanel

JLabel lbl = new JLabel(); 
lbl.setText("Layer " + numLayers); 
lbl.setFont(new Font("Verdana", 0, 12)); 
lbl.setVerticalTextPosition(1); 
lbl.setPreferredSize(new Dimension(200, 100)); 
lbl.setVisible(true); 
layers.add(lbl); 
+0

Est-ce que cela se produise lors de l'exécution? Si oui, appelez-vous 'revalidate()' puis 'repaint()' sur le JPanel après avoir ajouté l'étiquette? De plus, quel gestionnaire de disposition utilise JPanel? –

+0

'revalidate()' a résolu le problème. –

+0

Eh bien, voilà! La raison pour laquelle cela fonctionne: revalidate indique aux gestionnaires de disposition d'accepter les nouveaux composants (ou les composants supprimés) et re-mise en page tous les composants. –

Répondre

0

je devais revalidate() le panneau

2

Vous demandez:

... Chaque étiquette est ajouté de temps en temps, comment puis-je ajouter dans un format de liste de haut en bas?

Voici où vous utiliseriez probablement un JList plutôt que plusieurs JLabels. Vous avez un peu de flexibilité sur la façon dont les informations de la liste sont affichées et il est facile d'ajouter de nouveaux éléments au modèle de la liste.

+0

Mais ... je ne veux pas que ça agisse ou ressemble à une liste, je veux juste qu'elle apparaisse comme une liste. Je construis un menu "Layers", tout comme "Gimp" ou "PhotoShop". –

+0

* "Je construis un menu" Calques ", comme" Gimp ".." * Emuler cette interface graphique est un très mauvais signe. :( –

+0

@RyanNaddy: s'il vous plaît laissez-moi savoir plus sur ce que c'est exactement que vous essayez de faire. –

Questions connexes