Strona Główna | Kurs Javy | Galeria Apletów | Algorytmy | CodeGenerator | Państwa, miasta(gra) | Forum

INNE DZIAŁY
Co to jest java?

KURS
Dla początkujących

Zdarzenia myszy

W javie aby obsłużyć zdarzenia myszy należy zaimplementować interfejs MouseListener z pakietu java.awt.event.*.
Interfejs ten wymusza dodanie następujących metod:
  • public void mouseClicked(MouseEvent e)
    Reaguje na kliknięcie myszy.

  • public void mouseEntered(MouseEvent e)
    Reaguje na wejście kursora myszy w obszar komponentu.

  • public void mouseExited(MouseEvent e)
    Reaguje na wyjście kursora myszy z obszaru komponentu.

  • public void mousePressed(MouseEvent e)
    Reaguje na naciśnięcie przycisku myszy.

  • public void mouseReleased(MouseEvent e)
    Reaguje na zwolnienie przycisku myszy.

Wszystkie te metody przyjmują jako argument klase MouseEvent
Oto jej ważniejsze metody:
  • Point getPoint( )
    Zwraca położenie kursora myszy.
    Alternatywne metody to: int getX( ) i int getY( ).

  • int getButton( )
    Zwraca wartość przycisku myszy odpowiedzialnego za wygenerowanie zdarzenia.
    Wartości te odpowiadają stałym NOBUTTON, BUTTON1, BUTTON2 i BUTTON3.

Aby zarejestrować klasę nasłuchującą zdarzenie (implementującą interfejs MouseListener) należy wywołać metodę addMouseListener jako parametr podając klasę implementującą to zdarzenie.

A teraz przykład obsługi zdarzeń myszy.
Napiszemy prostą grę, która będzie mierzyć czas kolejnych kliknięć gracza na losowo wygenerowany kwadrat:

[Uruchom aplet]

import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;

public class fajer extends Applet implements MouseListener
{

    int pozX, pozY;
    Random r = new Random( ); // 1
    float czas;
    Date czas1=new Date( ), czas2= new Date( ); // 2

    public void init( )
    {
      addMouseListener(this);
      losuj( );
    }

    public void paint(Graphics g)
    {
      g.drawString("Czas reakcji: " + czas + " s.", 20, 20);
      g.fillRect(pozX, pozY, 20, 20);
    }

    void losuj( )
    {
      pozY = r.nextInt(this.getHeight( )-20);
      pozX = r.nextInt(this.getWidth( )-20);
    }

    public void mouseClicked(MouseEvent e)
    {
      if(e.getX( )>pozX && e.getX( )<pozX+20 && e.getY( )>pozY && e.getY( )<pozY+20)
      {
        losuj( );
        czas2 = new Date( );
        czas = (float)(czas2.getTime( ) - czas1.getTime( ))/1000;
        czas1 = new Date( );
        repaint( );
      }
    }

    public void mouseEntered(MouseEvent e) { }
    public void mouseExited(MouseEvent e) { }
    public void mousePressed(MouseEvent e) { }
    public void mouseReleased(MouseEvent e) { }
}
Kod wygenerowany za pomocą programu: Code Generator
1. Klasa Random służy do generowania liczb pseudolosowych (patrz: Klasa Random).
2. Klasa Date służy nam do mierzenia czasu. Klasę tą szerzej opiszę niebawem.
>Kliknij tutaj by skomentować, zgłosić błąd, lub uzupełnić tą część kursu.<




statystyki www stat.pl
Wszystkie prawa zastrzeżone. Created by MarioX