17 Haziran 2014 Salı

ActionListener mı MouseListener mı?



Bazı şeyler için ikisi de aynı görevi yapıyor gibi görünen bu iki arayüzün farklarını ve ne zaman hangisini kullanmamız gerektiğini açıklamaya çalışacağım.

Öncelikle Java'da eventsler Low level events ve semantic events olarak ikiye ayrılır. Low level evenstler daha çok alt seviyelerde(işletim sistemi bazında) olan olaylardır. Kullanıcıdan gelen inputlar sonucu oluşur.  Geri kalan her şeye semantic events diyebiliriz ve bunlar ise itemEvent'lar sonucu oluşur.

Bunları öğrendikten sonra ActionListener ile MouseListener arayüzlerinin temel özelliklerine bakalım.

ActionListener arayüzü sadece semantic eventslere bakar. Buton tıklanması, klavye kısayolu olan tuşa basılması gibi. Yani bunların actionEvent e sahip olup olmamasıyla ilgilenir. Eğer bir butona tıklanırsa ActonEvent ateşlenir ve bunu ActionListener ile handle edebiliriz. Ayrıca ActionListener arayüzünü uygularken sadece tıklandığında/basıldığında  ne yapılacağı metodu yazılması yeterlidir. Çünkü spesifik bir şeyler yapmıyoruz, sadece actionEvent ateşlenince yapılacak şeyi yazıyoruz.

Diğer yönden MouseListener ise low level eventlere bakar. Farenin nereye tıklandığını(koordinatsal olarak) handle edebilir, rastgele tıklanmaları handle edebilir, ayrıca beş tane override edilmesi gereken metodu vardır. Bunlar mousePressed(), mouseClicked(), mouseExited(), mouseEntered(), mouseReleased()

Şimdi asıl soruna geçelim. Örneğin bir tane butonumuz var ve butonun tıklanıp tıklanmadığını kontrol etmek istiyoruz. Hangi arayüzü kullanmalıyız?
Aslında mantık basit. Mümkün olduğunca semantic eventleri(actionEvent gibi) tercih etmeliyiz ki böylece kodumuz güçlü ve taşınabilir olsun.  Eğer spesifik bir şeyler yapmak istiyorsak ise low eventleri kullanmalıyız(mouseEvent gibi).
 


0 yorum:

Yorum Gönder