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

    Visualizzatore di immagini

    Ciao a tutti ragazzi, ieri facendo un semplice visualizzatore di immagini è venuto fuori un "problemino", spiego e posto il codice, devo visualizzare una immagine e dal main mi chiede la path dell'immagine, qundo do invio, alcune volte mi fa vedere l'immagine, molto spesso invece per una frazione di secondo la fa vedere e poi sparisce subito....non so se mi sono spiegato, se invece attivo il metodo paint mi appare tutto normale...mi sapete spiegare dove sta l'intoppo?

    codice
    codice:
    import java.awt.*;
    import javax.swing.*;
    
    public class Visualizzatore extends Frame{
    	private Image img;
    	private Insets ins;
    	public Visualizzatore(String path) throws Exception {
    		Toolkit tk=Toolkit.getDefaultToolkit();
    		Dimension dim = tk.getScreenSize();
    		//posso sostituire queste 4 righe con :
    		ImageIcon ii=new ImageIcon(path);
    		img=ii.getImage();
    		/*
    		img=tk.getImage(path);
    		MediaTracker mt=new MediaTracker(this);
    		mt.addImage(img,0);
    		mt.waitForAll();	
    		*/
    		
    		ins=getInsets();//deve andare sempre dopo setVisible
    		int img_w=img.getWidth(null);
    		int img_h=img.getHeight(null);
    		int fr_w=img_w+2*10+ins.left+ins.right;
    		int fr_h=img_h+2*10+ins.top+ins.bottom;		
    		setSize(fr_w,fr_h);
    		int x=(dim.width-getWidth())/2;
    		int y=(dim.height-getHeight())/2;
    		setLocation(x,y);
    		setTitle("gorilla");
                    setVisible(true);
    		Graphics g= getGraphics();
    		g.drawImage(img,ins.left+10,ins.top+10,null);	
    	}
    	/*
    	public void paint(Graphics g){
    		g.drawImage(img,ins.left+10,ins.top+10,null);	
    	}
    	*/
    	//home/domenico/Scrivania/gorilla.jpg
    	public static void main(String[] args) throws Exception{
    		String path=JOptionPane.showInputDialog("inserisci la path dell'immagine: "); //ha dei metodi statici mi crea finestre di dialogo  al volo
    	new Visualizzatore(path);
    	}
    
        
    }

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

    Re: Visualizzatore di immagini

    Originariamente inviato da dom.vecchioni
    se invece attivo il metodo paint mi appare tutto normale...mi sapete spiegare dove sta l'intoppo?
    Nessun intoppo ... è sempre la solita storia di capire come va gestito il painting nelle interfacce utente gestite ad "eventi".

    Quello che hai fatto nel costruttore è un disegno "al volo", prendi il Graphics e disegni. Ma non può essere persistente! Nelle interfacce utente gestite ad "eventi" come AWT/Swing, non sei tu che decidi sempre quando disegnare. Non sei tu il "padrone" della interfaccia utente. È il sistema che lo decide, cioè ti viene segnalato: "ehi componente ... ora devi disegnarti!". E tu devi disegnare. Punto.

    Quel "segnale" è appunto la invocazione di un metodo apposito. paint() per i frame mentre è paintComponent() per i JComponent.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    quindi per funzionare correttamente, il metodo paint deve essere sempre attivo.

    Scusate tutte queste mie domande ma mi servono per capire, non programmo da moltissimo quindi ancora parecchie cose mi sfuggono, e le interfacce grafiche sono una cosa un pochino complicata da capire, mille grazie a tutti.....

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 © 2024 vBulletin Solutions, Inc. All rights reserved.