Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Caricamento immagine nello stesso JFrame

    Salve a tutti.
    Ho creato una classe che, chiamata una funzione, fa partire un Jframe contenente un Jpanel con una immagine soggetta ad eleborazione 3D dal nome tipo image_i.jpg con 1<=i<=x
    Graficamente in fondo all'applicazione ho due pulsanti PREV e NEXT che di volta in volta dovrebbero caricare l'immagine successiva o precedente dopo averla elaborata.
    Purtroppo l'unico modo che ho trovato è il seguente:
    partenza(direct);
    frame.dispose();
    cioè chiamare di nuovo la funzione partenza() passandogli l'indirizzo dell'immagine successiva/precedente e poi chiudere il frame e aprirne un'altro con la nuova immagine elaborata. Vorrei caricare l'immagine successiva/precedente nello stesso Jpanel con le opportune elaborazioni.
    Potreste aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Riguardo al framework Swing ci sono sicuramente persone molto più preparate di me nel forum... ma visto che ancora nessuno ti ha risposto provo a farlo io.

    Vediamo se ho capito... In pratica quello che vuoi realizzare è una sorta di slideshow ad avanzamento manuale in cui viene letto un file da disco al quale, propedeuticamente alla visualizzazione, applichi un qualche tipo di image processing tramite il metodo partenza(). Il tuo problema è quindi sul refresh dell'interfaccia ad ogni avanzamento di immagine.

    Non so come hai strutturato la tua applicazione... però mi sembrerebbe logico fare una cosa del genere: in termini statici, il JFrame contiene un JPanel, che a sua volta contiene una JLabel. Quando dinamicamente viene selezionato un pulsante di avanzamento carichi l'immagine da disco, ci applichi le elaborazioni necessarie e utilizzi il metodo setIcon() di JLabel per visualizzarla nell'interfaccia. Infine aggiorni il JPanel che contiene la JLabel, invocando su di esso il metodo revalidate() e poi il repaint() (ora non ricordo, ma quest'ultimo potrebbe non essere necessario).

  3. #3
    Intanto ti ringrazio per la celere risposta che mi hai dato.
    Purtroppo abbiamo un JPanel incluso in un JFrame senza la presenza di JLabel.
    Hai idea di come fare?

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    In realtà... nello stesso modo: quando invochi revalidate() e repaint() (come ti ho detto, quest'ultimo potrebbe non essere necessario) su un determinato componente, essi agiscono sul componente stesso e su tutti quelli che contiene, ricalcolandone le informazioni grafiche.

    Per questo motivo, per motivi di performance, conviene sempre applicarli sul componente "più in basso" che puoi, nel tuo caso probabilmente il JPanel: se è stato modificato solo quello è inutile riaggiornare tutto il JFrame, no?

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.