Salve a tutti ragazzi.
Dovrei visualizzare in un jFrame una serie di immagini a tutto schermo, una per volta e per un tot di tempo.
Potete darmi qualche suggerimento?
Salve a tutti ragazzi.
Dovrei visualizzare in un jFrame una serie di immagini a tutto schermo, una per volta e per un tot di tempo.
Potete darmi qualche suggerimento?
OnLine il nuovo sito: www.lasfidacontinua.it
Ti basta che il JFrame sia "massimizzato" o vuoi avere una finestra che copra proprio tutto lo schermo senza barre/bordi/ecc..??Originariamente inviato da rob_santini
Dovrei visualizzare in un jFrame una serie di immagini a tutto schermo, una per volta e per un tot di tempo.
A parte questo, il modo più veloce e semplice è:
a) Carica le immagini (qui dipende ... ci sono molti modi, es. con la ImageIO). E metti i riferimenti agli Image in un array.
b) Usi un javax.swing.Timer per temporizzare le immagini.
c) Nel tuo JFrame metti un JLabel e ogni tot di tempo gli assegni un nuovo ImageIcon creato passando il Image i-esimo.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ciao
a) va bene questo?
per gli altri due punti cerco nela documentazione e ti faccio sapere.codice:import java.awt.Component; import java.awt.*; import java.awt.event.*; import java.net.*; public class Immagine extends Panel{ URL URLImmagine = null; String fileImmagine = null; int posX=0; int posY=0; int flagOrigine = 0; public Immagine(String in,int x, int y) { super(); fileImmagine = in; flagOrigine =0; posX=x; posY=y; this.setLayout(null); this.setSize(40,40); } public Immagine(URL in,int x, int y) { super(); URLImmagine = in; flagOrigine =1; posX=x; posY=y; this.setLayout(null); this.setSize(40,40); } public void paint(Graphics g){ if (flagOrigine ==0) g.drawImage(getToolkit().getImage(fileImmagine),posX,posY,this); else g.drawImage(getToolkit().getImage(URLImmagine),posX,posY,this); } public void update(Graphics g) { paint(g); } }
Grazie
Roberto
OnLine il nuovo sito: www.lasfidacontinua.it
b) questo mi sembra interessante (trovato nella documentazione):
Un dubbio: ogni secondo viene ripetuta actionPerformer. Se io voglio che ogni secondo cambi l'immagine, come posso far cambiare il path dell'immagine? la mia idea (spartana) era quella di mettere un contatore globale e incrementare quello, e prendere il path del'immagine da un array...codice:int delay = 1000; //milliseconds ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { //...Perform a task... } }; new Timer(delay, taskPerformer).start();
OnLine il nuovo sito: www.lasfidacontinua.it
Ok, credo di aver risolto, usando un Thread.sleep(millisecondi) al posto del timer dato che ogni immagine aveva un suo tempo di pausa.
Un'ultima domanda: usando il codice che ho postato sopra per visualizzare un'immagine, come faccio a ridimensionarla in modo automatico a seconda della dimensione della finestra?
Grazie
Ciao ciao
OnLine il nuovo sito: www.lasfidacontinua.it