Salve a tutti,
ho un problema che ormai mi porto dietro da una settimana.
Il mio problema è nel generare un evento del mouse se il puntatore va sopra un cerchio appena realizzato.
Per cercare di spiegare il problema il meglio possibile suddivido l'operato in piccole parti.
1. Realizzare un applet (fatto)
2. che prenda le coordinate dal click del mouse sullo schermo (fatto)
3. e crei un cerchio verde in quelle coordinate. (fatto)
4. Una volta creato il cerchio l'utente può o crearne un altro in altre coordinate sempre al click del mouse (fatto)
5. oppure cambiare il colore del cerchio in giallo semplicemente avvicinandosi con il puntatore del mouse (problema)
6. se poi clicca sopra il cerchio già creato, il cerchio deve diventare di colore rosso. (....)
Ecco il codice per realizzare i primi 4 punti, ma per il punto 5 non riesco proprio a risolverlo.
Io credevo che avvicinandosi con il puntatore del mouse venisse invocato il metodo Entered di mouseListener dato che nelle API è specificato che questo metodo viene invocato ogni volta che il puntatore va sopra una figura geometrica. Facendo varie prove mi sono accorto che il metodo viene invocato quando il puntatore entra dentro l'applet. Ecco di seguito il mio codice:
public class GiocoNew extends JApplet {
public GiocoNew(){
Container Contenitore=getContentPane();
Contenitore.add(new mioPanel());
}
}
class mioPanel extends JPanel implements MouseListener {
private int x,y;
private boolean enter;
public mioPanel(){
addMouseListener(this);
x=0;
y=0;
enter=false;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.GREEN);
g.fillOval(x,y,20,20);
g.drawString("Evento: "+enter,0,100);
}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){
// inizio a scegliere i punti //
x=e.getX();
y=e.getY();
repaint();
}
public void mousePressed(MouseEvent e){}
public void mouseExited(MouseEvent e){
enter=false;
repaint();
}
public void mouseEntered(MouseEvent e){
enter=true;
repaint();
}
}