Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 1 decennio fa

Come posso Capire dove sta il mouse in un JFrame? -URGENTEEEE-?

NON MI DITE CHE DEVO USARE ACTIONLISTENER MI SERVE UN ALTRA COSA-leggi sotto-

Ho realizzato un JFrame con dei JButton, ma voglio sapere un metodo per capire in che posizione sta il mouse nella finestra e un altro metodo per capire se il tasto sinistro del mouse è premuto(cioe che restituisca un boolean). non mi dite actionlistener(action performed, non mi va bene)

1 risposta

Classificazione
  • Anonimo
    1 decennio fa
    Risposta preferita

    Ci sono più modi per fare ciò che chiedi:

    • Usando la classe MouseInfo; questa classe mette a disposizione un metodo per recuperare la posizione assoluta (non relativa a ciascuna finestra) del mouse:

    MouseInfo.getPointerInfo( ).getLocation()

    Per trovare la x e la y si usano rispettivamente:

    MouseInfo.getPointerInfo( ).getLocation().x

    MouseInfo.getPointerInfo( ).getLocation().y

    Ovviamente se vuoi la posizione relativa ad una finestra ti basterà sottrarre dalla x e y rispettivamente la x e y della finestra stessa.

    • Associando al JFrame un MouseListener. È un'interfaccia che funziona in maniera simile all'ActionListener ma con metodi diversi (mousePressed, mouseReleased, mouseClicked, etc. etc.). Tale interfaccia non è pero in grado di rilevare il semplice movimento del mouse (si attiva solo in presenza di certi altri eventi); si può far ciò...

    • Associando al JFrame un MouseMotionListener, molto simile al MouseListener ma attivato soltanto dal movimento del mouse (mouseMoved o mouseDragged).

    Se decidi di utilizzare uno fra MouseListener e MouseMotionListener, per ottenere la posizione relativa del mouse ti basterà invocare il metodo getPoint() sul MouseEvent generato, mentre per quella assoluta occorre getLocationOnScreen().

    Per controllare se il tasto sinistro del mouse è premuto basta controllare se il metodo getButton() del MouseEvent generato equivale a MouseEvent.BUTTON1; un esempio con mousePressed:

    public void mousePressed(MouseEvent me)

    {

    if (me.getButton()==MouseEvent.BUTTON1)

    {

    // ... codice da eseguire

    }

    }

    Tieni conto che se una certa porzione del JFrame è coperta da un altro componente (un JPanel, per esempio), tutti gli eventi del mouse saranno passati a quella componente e non al JFrame, che non "vedrà" niente.

Altre domande? Fai una domanda e ottieni le risposte che cerchi.