Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453

    [Java swing] immagine che si aggiorna in tempo reale

    Ciao ragazzi,

    sto facendo un'applicazione con java swing che deve generare dei grafici che si aggiornano in tempo reale...

    in pratica ogni tot secondi genero un file jpg: vorrei mostrare questa immagine nella mia applicazione grafica, aggiornandolo ogni volta che l'immagine viene rigenerata. Come si fa?

    Per mostrarla l'ho impostata come icona di una Jlabel, poi pensavo di fare tipo repaint() dopo ogni aggiornamento del file jpg, però non funziona, me sa che me sfugge qualcosa


    mi potete aiutare?

    grazie!

  2. #2
    Pui utilizzare un JPanel ridefinendo il paintComponent dove disegni l'immagine a basso livello.
    Poi usi il metodo setImage per settare l'immagine che vuoi tu:
    codice:
    public class RefreshPanel extends JPanel {
    
        private Image img;
    
        public RefreshPanel() {
      
            
        }
    
        private void setImage(Image image) {
            try {
                this.img = image;
                MediaTracker track = new MediaTracker(this);
                track.addImage(img, 0);
                track.waitForID(0);
            } catch (Exception e) {
                e.printStackTrace();
            }
            repaint();
        }
    
        protected void paintComponent(Graphics g) {
            setOpaque(false);
            g.drawImage(img, 0, 0, null);
            super.paintComponent(g);
        }
         
    }
    Il MediaTracker blocca l'esecuzione fino a quando l'immgine è effettivamente caricata in memoria. Poi per caricare un oggetto Image puoi utilizzare il Toolkit di sistema:
    codice:
    String path = "";//percorso
    Image img = Toolkit.getDefaultToolkit().createImage(path);
    Questo è un possibile metodo, si puo fare in tanti altri modi
    http://www.simplesoft.it

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java swing] immagine che si aggiorna in tempo reale

    Originariamente inviato da Kilin
    Per mostrarla l'ho impostata come icona di una Jlabel, poi pensavo di fare tipo repaint() dopo ogni aggiornamento del file jpg, però non funziona, me sa che me sfugge qualcosa
    Chiariamo bene: tu (ri)crei ogni volta il file xyz.jpg? Allora la immagine va proprio ricaricata ogni volta.

    Ma c'è una cosa, che può semplificare: se la immagine è stata caricata attraverso il Toolkit (e ImageIcon infatti lo usa quando carica lui la immagine da file/URL), allora basta un flush() sulla immagine per "rilasciare" le risorse della immagine e quindi permettere il ricaricamento dalla sorgente inizialmente specificata.
    Però poi serve comunque un repaint() sulla label.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    si, ogni volta viene ricreata l'immagine... ho provato con flush() e funziona! Grazie!

    Mi sa però che devo fare attenzione al caricamento, come suggeriva SawyerFord... ora si vede che l'immagine si aggiorna, è un po' brutto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.