Settare un immagine in un JLabel

di Anonimizzato8544 il
2 risposte
Salve ragazzi ho un problema ho un JLabel e al suo interno ho immagine c'è una procedura oppure una sequenza di operazioni che mi permette di cambiare l'immagine all'interno del panel? ho già provato repaint() vi linko il codice che ho creato, mi va bene anche sostituire la JLabel con la JPanel


public void run() {
			try {
				for (int i = 1; i <= 10; i++) {
					Thread.sleep(100);   // 100 ms
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							lblNewLabel.removeAll();
							lblNewLabel.validate();
							lblNewLabel.setIcon(new ImageIcon("C:\\Users\\broke\\Desktop\\backupworkspace\\IUM\\src\\immagini\\vulcano.png"));
							try {
								Thread.sleep(100);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
							lblNewLabel.removeAll();
							lblNewLabel.validate();
							lblNewLabel.setIcon(new ImageIcon("C:\\Users\\broke\\Desktop\\backupworkspace\\IUM\\src\\immagini\\menu_tendina.jpg"));
						}


					});
				}
			} catch (InterruptedException e) {
				System.err.println(e);
			}

			}

2 Risposte

  • broke31 ha scritto:


    salve ragazzi ho un problema ho un JLabel e al suo interno ho immagine c'è una procedura oppure una sequenza di operazioni che mi permette di cambiare l'immagine all'interno del panel? ho già provato repaint() vi linko il codice che ho creato, mi va bene anche sostituire la JLabel con la JPanel
    Due cose:
    - primo, innanzitutto lblNewLabel è il JLabel, giusto? Bene, allora non servono removeAll() e validate() !

    - secondo, il run() interno, quello del invokeLater (non quello del thread), è ovviamente eseguito nel contesto del EDT. E se ci metti dentro un sleep, di nuovo lo stai tenendo "impegnato" tu. Quindi, tra l'altro, l'immagine "vulcano.png" non la vedi.
  • Grazie mille ho finalmente capito dove stavo sbagliando!
Devi accedere o registrarti per scrivere nel forum
2 risposte