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

    Ascoltatori eventi per immagini

    Ciao a tutti,
    io dovrei fare in modo che il programma esegua una routine al click del mouse sopra ad un'immagine. Ho visto che il metodo AddMouseListener non è implementato dall'oggetto Image. Come posso fare?

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

    Re: Ascoltatori eventi per immagini

    Originariamente inviato da bubaboss
    io dovrei fare in modo che il programma esegua una routine al click del mouse sopra ad un'immagine. Ho visto che il metodo AddMouseListener non è implementato dall'oggetto Image. Come posso fare?
    No, perché Image non è un "componente" grafico!! È solo un oggetto che rappresenta e modella una immagine.

    Bisogna vedere dove questa immagine è disegnata. Messa in un ImageIcon visualizzato da un JLabel? O un JButton? O disegnata direttamente sul Graphics di un (tuo) componente?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Scusa se ho interrotto la discussione così bruscamente ma ultimamente ho avuto qualche problema tecnico. L'immagine è disegnata direttamente sul Graphics di un componente (nel mio caso un JPanel)

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bubaboss
    L'immagine è disegnata direttamente sul Graphics di un componente (nel mio caso un JPanel)
    Allora è sul componente, il tuo pannello, che puoi registrare i listener.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    In pratica dovrei fare all'interno del pannello sul quale sono disegnate le immagini
    codice:
    this.AddMouseListener()
    Giusto??
    Ma poi come faccio a recuperare il riferimento all'immagine se ne ho piu' di una?????

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bubaboss
    In pratica dovrei fare all'interno del pannello sul quale sono disegnate le immagini
    codice:
    this.AddMouseListener()
    Giusto??
    Si, a parte la iniziale che è addMouseListener( .... )

    Originariamente inviato da bubaboss
    Ma poi come faccio a recuperare il riferimento all'immagine se ne ho piu' di una?????
    Se nel componente, nel paintComponent(), disegni più immagini ok ma devi comunque fare tu tutta questa gestione. Ovvero tenerti da qualche parte delle meta-informazioni sulle immagini, a che posizione le disegni e con quale dimensione.

    Insomma, è tutto a tuo carico. Ma si può fare benissimo. La questione è solo vedere quali/quante immagini hai, se sono un numero fisso o ad esempio arbitrario (es. scelte e aggiunte dall'utente, quante ne vuole). E si tratta alla fin fine di creare la struttura dati più adatta per mantenere immagini e informazioni.

    Quindi con il "point" del mouse diventa perfettamente possibile andare a cercare in quale immagine "cade" il punto.

    Ma ripeto, tutto questo è a tuo carico, non c'è nulla di predefinito nel framework.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ok...grazie mille per il supporto

  8. #8
    Mi sembrava di aver capito invece non è così....
    Per disegnare l'immagine io la recupero attraverso un Toolkit e poi la salvo in un MediaTracker. In questo modo:

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.util.*; 
    
    public class ImagePanel extends JPanel
    {
    private Image im1;
    private Image[] d;
    private int n1,n2,n3,n4,n5,height,width;
    private Graphics f;
    
    
    
    
    public ImagePanel(int n1, int n2, int n3, int n4, int n5)
     {
    	 //aggiungo immagine
    	 Toolkit t= Toolkit.getDefaultToolkit();
    	 im1 = t.getImage("PROVA.jpg");
    	 d = new Image[6];
    	 d[0] = t.getImage("PROVA1.png");
    	 d[1] = t.getImage("PROVA2.png");
    	 d[2] = t.getImage("PROVA3.png");
    	 d[3] = t.getImage("PROVA4.png");
    	 d[4] = t.getImage("PROVA5.png");
    	 d[5] = t.getImage("PROVA6.png");
    	 
    	
    	 MediaTracker m1= new MediaTracker(this);
    	 m1.addImage(im1, 1);
    	 m1.addImage(d[0], 2);
    	 m1.addImage(d[1], 3);
    	 m1.addImage(d[2], 4);
    	 m1.addImage(d[3], 5);
    	 m1.addImage(d[4], 6);
    	 m1.addImage(d[5], 7);
    	 
    	 try
    	 {
    		 m1.waitForAll();
    	 }
    	 catch (InterruptedException e)
    	 {
    	 }
    	 width=756; 
    	 height=817; 
     }
    
    public void paintComponent (Graphics g)
      {
    	super.paintComponent(g);
    	int x,y;
    	x=120;
    	y=350;
    	g.drawImage(im1, 0, 0,width,height,null);
    	g.drawImage(d[n1], x, y,null);
    	g.drawImage(d[n2], 2*x, y,null);
    	g.drawImage(d[n3], 3*x, y,null);
    	g.drawImage(d[n4], 4*x, y,null);
    	g.drawImage(d[n5], 5*x, y,null);
      }
    
    }
    Premetto che il numero di immagini e' fisso.
    Io avevo pensato di fare una cosa del genere ma il riferimento alle immagini e' contenuto nel MediaTracker????

    codice:
    this.addMouseListener(m1);
    Se non e' nel MediaTracker da dove lo tiro fuori???

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bubaboss
    Io avevo pensato di fare una cosa del genere ma il riferimento alle immagini e' contenuto nel MediaTracker????
    Il MediaTracker ti serve solo per attendere il completamento del caricamento e basta. Dopo il waitForAll non ti servirebbe più e infatti terminato il costruttore non lo referenzi più e va al g.c. da solo.

    Le posizioni le hai fissate tu in modo "cablato" nel sorgente. Quindi le sai. Le dimensioni le hai comunque dalle immagini.
    Pertanto non vedo problemi a cercare in quale "rettangolo" delle varie immagini "cade" un punto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.