2011-11-28 16 views
5

io non sono in grado di visualizzare le etichette che vengono creati dynamically.The codice è il seguente:JLabel Non gamma visibile in NetBeans, creando dinamicamente

JLabel[] labels = new javax.swing.JLabel[cur.length]; 
for (int i = 0 ;i < cur.length; i++) 
{ 
    System.out.println("in"); 
    labels[i] = new JLabel(cur[i]); 
    labels[i].setText(""+cur[i]); 
    jPanel1.add(labels[i]); 
    this.setVisible(true); 
    } 
} 
+1

1.) spostare this.setVisible dopo per ciclo. 2.) Prova a chiamare jPanel1.validate()/repaint() dopo aver aggiunto lable ad esso. (Potrebbe non essere necessario se si sposta setVisible alla fine.) Inoltre c'è una parentesi di chiusura in più nel codice postato per favore rimuoverlo. –

+0

@HarryJoy thx .. – abc

risposta

4

Possono esserci una o più cause per il tuo problema
1. Il tuo JPanel non può essere aggiunto al Contenitore. Aggiungilo usando getContentPane(). Add (jpanel1);
2. JLabel stesso non è visibile. Imposta la loro proprietà visible su true.
3. JPanel non sta eseguendo il flusso ma CardLayout e quindi potrebbero essere visibili sul retro di un altro componente. Assegnare il layout utilizzando jpanel1.setLayout (new FlowLayout())
4. Spostare this.setVisible (true) sul loop esterno.

+0

thx ho perso anche il secondo punto .. – abc

+2

* "JLabel stesso non è visibile. Imposta la proprietà visible su true." * I componenti aggiunti ai contenitori sono visibili per impostazione predefinita. Quindi no, questa non è la causa del problema. * "Il tuo JPanel non ha flowlayout ma GridLayout." * Non farebbe differenza qui. In entrambi i casi è possibile visualizzare più componenti. –

+0

Grazie. Mi mancava scrivere "CardLayout" invece di GridLayout. Per favore, vedi il mio punto Editted no: 3 – NavSoft

0

Che il layout stai avendo per l'oggetto JPanel? prova a cambiare il layout per dire, FlowLayout. Dagli il layout all'inizio dove lo hai definito e quindi utilizzalo nel tuo ciclo.