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

    [java - JApplet] MouseEvent nel metodo Entered di MouseListener

    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:
    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();
      }
    }
    Sono sicuro che la soluzione al mio problema è sui metodi di MouseListener e tramite MouseEvent, sono che non riesco proprio a trovare la soluzione.....
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

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

    Re: [java - JApplet] MouseEvent nel metodo Entered di MouseListener

    Originariamente inviato da offlieman
    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.
    No. Sopra il componente che gestisci es. JPanel ... non una qualunque "figura" specifica che tu disegni sul componente. Il framework non "sa" nulla di cosa/come/dove tu disegni!

    Sei tu che devi tenere all'interno della tua classe una "struttura dati" che contiene le informazioni sulle figure che disegni e quando devi sapere con quale figura interagire dato un "punto" x,y sul componente, devi andare a scansionare la struttura dati per scoprire tu su quale figura "cade" il punto.

    Ti suggerisco, se vuoi, di vedere tra i Java Examples sezione AWT/Swing - Graphics, in particolare gli esempi DraggableFigures.java e ChangeableTrianglePainter.java.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ti ringrazio anticipatamente per la risposta e per gli esempi che mi hai postato.
    Ho capito benissimo quello che intendi, adesso tocca a me imparare un po' di strutture dati come Graphics2D e Ellipse2D. Credo che studiando un po' su questi metodi e con MouseMotionListener dovrei risolvere.

    Complimenti ancora per gli esempi del tuo sito e soprattutto per come sono implementati.
    Utilizzi metodi e le classi esistenti di Java che io sconosco totalmente.

    PS. DraggableFigures.java non riesco a farlo funzionare, credo che dovrei modificare qualcosa tipo:
    ArrayList<AbstractFigure> figuresList = new ArrayList<AbstractFigure>();
    ma cmq l'altro esempio credo che possa bastare per riuscire nel mio intento.
    grazie ancora...
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

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