MouseListener mendengarkan interaksi mouse terhadap komponen swing. MouseListener dapat didaftarkan pada semua komponen swing. MouseListener mendengarkan event :
● mousePressed : event ini terjadi ketika user menekan salah satu tombol mouse diatas komponen swing.
● mouseReleased : setelah tombol ditekan, komponen swing akan menerima pelepasan tombol mouse. Tetapi jika tombol mouse dilepaskan pada saat pointer mouse tidak berada diatas komponen swing, maka event ini tidak akan terjadi.
● mouseClicked : event ini muncul ketika user melakukan click tombol mouse diatas komponen swing.
● mouseEntered : ketika mouse memasuki area diatas komponen swing, event ini akan dipicu.
● mouseExited : muncul ketika mouse akan meninggalkan area diatas komponen swing
Ketika user menekan tombol mouse (click), event mousePressed dibuat, kemudian mouseReleased dan akhirnya mouseClicked muncul terakhir.
MouseMotionListener juga dapat didaftarkan sebagai listener pada semua komponen swing. MouseMotionListener dipisahkan dari MouseListener karena penanganan event mouseMove yang lebih berat dan intensif. MouseMotionListener mendengarkan dua envent:
● mouseMoved : terjadi ketika user menggerakkan mouse diatas komponen swing
● mouseDragged : terjadi ketika user menekan tombol mouse sekaligus menggerakkanya diatas komponen swing
Semua method diatas menerima argumen berupa class MouseEvent. Method getClickCount digunakan untuk menentukan jumlah click yang terjadi dalam waktu yang berdekatan. Method getClickCount juga digunakan untuk menentukan apakah klik yang terjadi adalah single klik atau double klik.
Method getButton digunakan untuk menentukan tombol mana yang ditekan oleh user. Pada umumnya mouse yang tersedia di pasaran mempunyai tiga timbol yang dapat di klik, tombol kiri, tombol tengah dan tombol kanan. Method getButton akan mengembalikan nilai MouseEvent.BUTTON1 jika tombol kiri ditekan, MouseEvent.BUTTON2 jika tombol tengah ditekan dan MouseEvent.BUTTON3 jika tombol kanan ditekan.
Method getX dan getY akan mengembalikan koordinat dimana MouseEvent terjadi. Koordinat yang digunakan adalah koordinat relatif. Koordinat (0,0) berada di pojok kiri atas dari komponen swing, semakin kebawah nilai Y semakin besar dan semakin ke kanan nilai X semakin besar. Nilai koordinatnya dinyatakan dalam satuan pixel.
Aplikasi di bawah ini adalah sebuah JFrame yang mempunyai JLabel di dalamnya. Ketika terjadi event mouseClick dan mouseMove, JLabel akan menampilkan dimana event tersebut terjadi. Jika event klik yang muncul, maka text dari JLabel akan berisi “clicked at (x,y)”, sedangkan event move hanya akan memunculkan koordinat “(x,y)” saja.
Contoh aplikasi sederhana yang mengani MouseEvent
Lakukan langkah-langkah berikut ini untuk membuat aplikasi seperti diatas :
1. Buat class JFrame baru, beri nama FrameMouseMotion.
2. Letakkan sebuah JLabel baru, beri nama lblStatus.
3. Pilih JFrame di Jendela Designer, klik kanan dan pilih menu :
Set Layout > Null Layout
Langkah ini bertujuan untuk membuat agar JFrame menggunakan null layout. Kalau tidak menggunakan null layout kita tidak bisa meletakkan JLabel pada sembarang posisi.
4. Pilih kembali JFrame, klik kanan dan pilih menu
Events > Mouse > mouseClicked
5. modifikasi kode pada Jendela Code yang tampil menjadi seperti di bawah ini :
private void formMouseClicked(MouseEvent evt) {
lblStatus.setText("clicked at (" + evt.getX() +
"," + evt.getY() + ")");
lblStatus.setLocation(evt.getX(),evt.getY());
}
Kode diatas menangani penekanan tombol mouse, kemudian mengubah text JLabel dan memindahkan JLabel ke posisi dimana event mouseClicked terjadi.
6. Pilih JFrame lagi di Jendela Design, klik kanan dan pilih menu :
Events > MouseMotion > mouseMoved
7. Modifikasi kode yang muncul pada Jendela Code menjadi seperti di bawah ini :
private void formMouseMoved(MouseEvent evt) {
lblStatus.setText("(" + evt.getX() + "," +
evt.getY() + ")");
lblStatus.setLocation(evt.getX(),evt.getY());
}
8. Compile dan jalankan aplikasi di atas.
Masih banyak lagi Event-Listener yang disediakan oleh JDK. Dari bab di atas kita sudah dapat mengerti dengan baik konsep Event-Listener dan pattern Observer yang mendasarinya. Dengan kemampuan ini kita bisa dengan mudah mengerti bagaimana event-listener yang lain bekerja.
Event-Listener juga dapat dijalankan terhadap Java Bean menggunakan PropertyChangeListener dan PropertyEvent. Konsep ini dapat digunakan untuk mengamati perubahan pada field Java Bean.
Tidak ada komentar:
Posting Komentar