[JAVA] mouselistener op java.awt.Image

Pagina: 1
Acties:

  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
Hallo,


Is het mogelijk om op een Image object een mouselistener toe te voegen
Ik wil namelijk de x en y coordinaten krijgen van de plaats waarop de gebruiker
heeft geklikt in de foto ?
ik gebruik het java.awt.Image object voor de foto maar als ik de javadoc moet geloven is het niet mogelijk om daarop een mouselister toe te passen.

Moet ik dan de resize mogelijkheid van mijn app afzetten en de mouselistener op mijn
window object zetten en zo met enkele foefjes mijn coordinaten berekenen ?

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Een image is geen Component en kan dus niet zomaar neergepoot worden. Je zult dus er sowieso iets omheen moeten gooien. Wat je bijvoorbeeld kunt doen is je eigen extensie van de klasse Canvas (als je in AWT werkt) of JPanel (als je in Swing werkt). Van deze extensie geef je vervolgens je eigen implementatie van de paint respectievelijk de paintComponent methode die je de image laat tekenen. Zowel Canvas als JPanel staan het je toe een mouse-listener toe te voegen, en dan moet de rest wel lukken denk ik zo...

[ Voor 4% gewijzigd door SWfreak op 17-06-2003 18:00 . Reden: AWT Panel moest Canvas zijn ]


  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
ok thx ik ga het nu eens probere :)

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
hmm ik weet niet 100% het antwoord , maar met Swing stop ik in alle gevallen een Image(-Icon) in een container(JPanel). Zo heb je ineens alle functionaliteit ervan.

edit:
simulpost met SWFreak ;)

[ Voor 10% gewijzigd door hobbit_be op 17-06-2003 17:59 ]


Verwijderd

Je kunt het bijv op deze manier doen. Je maakt een class ImageCanvas die Canvas extends:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.awt.*;
import java.awt.event.*;

public class ImageCanvas extends Canvas
{
    private Image myImage;
    
    //CONSTRUCTOR
    public ImageCanvas (Image i)
    {
        myImage = i;
        setSize(myImage .getWidth(null), myImage .getHeight(null));
    }
    
    public void paint(Graphics g)
    {
        g.drawImage(myImage, 0, 0, this);
    }
    
}

En vervolgens maak je in een andere klasse waar je deze Image in wilt zetten:
Java:
1
2
3
4
5
6
7
8
9
10
11
imagecanvas= new ImageCanvas (plaatje); //plaatje is je image
        imagecanvas.addMouseListener(new MouseListener()
        {
            public void mousePressed(MouseEvent e)
            {
                int x = e.getX();
                int y = e.getY();

                   // if(x > iets && y < iets) //doe iets met de x en y
             }
        }

[ Voor 3% gewijzigd door Verwijderd op 18-06-2003 11:26 ]