Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    78
    ripesco questa discussione per porre un'altra domanda:
    se invece volessi conoscere le coordinate ad ogni movimento come faccio? Tra i metodi della classe non ce nè uno che mi soddisfi.
    Ho provato a invocare il getX() in istanti diversi su posizioni diverse del mouse, ma come immaginavo restituisce sempre le stesse coordinate del punto in cui è stato richiamato.

    Aiuti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Implementa MouseMotionListener , il suo metodo mousMoved , e usa getX e getY per le coordinate sul MouseEvent..
    Non penso che ti permetteranno di continuare questo post "morto" da anni



  3. #3
    Originariamente inviato da zipangulu
    Non penso che ti permetteranno di continuare questo post "morto" da anni



    Non si ripescano discussioni morte e sepolte, comunque per questa volta sposto i post nuovi in una discussione separata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    78
    Scusate non sapevo non si ripescassero altri post! Comunque ho fatto come hai detto, ma non si attiva muoseMove.
    Io ho aggiungo a un JPanel l'ascoltatore, e sulla documentazione di MouseMove() c'è scritto:

    "Invoked when the mouse cursor has been moved onto a component but no buttons have been pushed."

    Mi sa che non fa proprio quello che voglio io.

    Ho provato ad aggiungere questo pezzo di codice al mio ascoltatore (che per gli altri metodi funziona)

    codice:
    		public void mouseMoved(MouseEvent me){
    			System.out.println(me.getX());
    		}
    e non fa nulla

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Sei sicuro che il Panel "in ascolto" abbia il focus ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    78
    Non so bene cosa sia il focus, ma intuitivamente mi viene da pensare se ha l'ascoltatore attivato. Se così fosse allora ti dico di si, perché mouseClicked funziona

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Posta un po' di codice , in particolare :
    -dove assegni l'ascoltatore
    -dove eventualmente implementi l'interfaccia e i metodi di essa


  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    78
    codice:
    //ASCOLTATORE MOUSE
    	class AscoltatoreMouse implements  MouseListener, MouseMotionListener{
    		private int clicX;
    		private int clicY;
    		private int tempX;
    		private int tempY;
    		private int posX;
    		private int posY;
    
    		public void mouseClicked(MouseEvent e){
    			
                            //codice	
    
    		}//mouseClicked
    		
    		public void mousePressed(MouseEvent me) {
    			clicX = me.getX();
    			clicY = me.getY();
    		   	tempX = posX;
    		   	tempY = posY;
    		}//mousePressed
    
    		public void mouseReleased(MouseEvent me) {
    			if (clicX!=me.getX() || clicY!=me.getY())
    				riposizionaFrame(me.getX() - clicX, me.getY() - clicY);
    		}//mouseREleased/
    		
    		public void mouseMoved(MouseEvent me){
    			System.out.println(me.getX());
    		}
    		
    		public void mouseDragged(MouseEvent me){}
    		
    		public void mouseExited(MouseEvent me){}
    		
    		public void mouseEntered(MouseEvent me){}	
    		
    		private void riposizionaFrame(int x, int y) {
       			setLocation(tempX + x, tempY + y);
    	   		tempX += x;
       			tempY += y;
       			posX += x;
       			posY += y;
    		}//riposizioamento
    	}//AscoltatoreMouse
    Il codice di mouseClicked l'ho tolto perché lungo. Come vedi mousePressed e mouseReleased con riposizionaFrame fanno si che io possa spostare il Frame col click.
    Solo che non si sposta con il mouse, ma quando appunto c'è il "released".
    Il mouseMove lo volevo usare appunto per far si che la finestra si spostasse progressivamente.

    assegnazione:
    codice:
    tela.addMouseListener(new Teatro.AscoltatoreMouse());
    dove tela è un JPanel

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Eh no , devi fare anche
    codice:
    tela.addMouseMotionListener (ilTuoListener);
    a questo punto ti converrebbe crearli divisi gli ascoltatori


  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    78
    Questo codice è dentro la classe Teatro, dove c'è anche l'ascoltatore, qual'è l'errore?

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.