Penanganan Mouse (Pemograman Java)
Semua sistem operasi di mana SWT diimplementasikan mendukung
perangkat tunjuk. Biasanya berbentuk mouse, akan tetapi bisa jadi berupa
trackball, trackpad, atau jenis perangkat keras lainnya. Pada komputer
genggam, perangkat tunjuk bisa jadi berupa stylus. Untuk mempermudah
pembahasan, kita akan gunakan mouse sebagai perangkat tunjuk, tidak
peduli bagaimana perangkat aslinya.
Posisi suatu mouse biasanya
digambarkan dalam bentuk ikon kecil pada layar yang disebut kursor. Hal
ini berlaku untuk semua platform, kecuali pada Windows CE, karena
perangkat Windows CE biasanya berupa perangkat tunjuk "langsung",
seperti stylys, yang tidak membutuhkan kursor.
Mouse biasanya
memiliki tiga tombol (kecuali pada Macintosh yang hanya memiliki satu
tombol, walaupun sebenarnya mouse lebih dari 1 tombol pun bisa
digunakan). Mouse digunakan untuk menunjuk, klik, geser (drag) dan
memilih komponen kontrol GUI. Bisa juga digunakan untuk menampilkan menu
konteks yang biasanya ditampilkan dengan mengklik kanan suatu mouse.
Perilaku "drag-and-drop" mouse kurang lebih sangat bergantung pada
platformnya.
Ketika kita menggeser mouse, kursor akan berbah
bentuk, tergantung dari kontrol apa di bawahnya. Misalnya, widget teks
akan mengubah tampilan kursor seperti huruf I untuk menunjukkan bahwa
user bisa mengetikkan sesuatu pada widget tersebut. Di dalam kursor, ada
titik pusat yang menunjukkan koordinat x dan y suatu mouse ketika event
pada mouse terjadi.
Event pada Mouse
Ketika
tombol mouse ditekan atau mouse digerakkan, event mouse dibuat dan akan
diberikan kepada widget yang ada di bawahnya. Akan tetapi ketika tombol
mouse ditekan dan ditahan (terus ditekan), dan mouse berada di luar
widget (mungkin ada di widget lain atau pada aplikasi lain di desktop),
eventnya akan diberikan kepada widget awal di mana mouse tersebut
ditekan. Pengalihan event sementara ini disebut pengambilan mouse.
Widget yang menerima event disebut widget pengambil. Pengambilan mouse
terhadi secara otomatis pada SWT. (Ini mungkin bukan sesuatu masalah,
akan tetapi sebagai informasi saja kepada Anda).
Tabel - Isi Event Mouse ketika suatu tombol mouse ditekan, dilepaskan atau mouse digeser
Nama Field | Penjelasan |
button | Tombol yang ditekan atau dilepaskan |
x | Koordinat x ketika event terjadi |
y | Koordinat y ketika event terjadi |
stateMask | Bit mask yang menyatakan kondisi keyboard dan mouse sebelum event terjadi |
Ketika
mouse ditekan atau dilepas, field bernama "button" akan diisi oleh
tombol mana yang ditekan. Tombol mouse diberi nomor dari kiri ke kanan
yang dimulai dari 1. Untuk user kidal (dan mengkonfigurasi sistem
operasi untuk orang kidal), penomoran tombol tetap sama, akan tetapi
dimulai dari kanan ke kiri. Pemetaan tombol untuk orang kidal ini tidak
tampak oleh SWT dan aplikasi kita, karena dilakukan secara otomatis oleh
sistem operasi.
Ketika terjadi
event pada mouse, koordinat x dan y-nya juga dilaporkan dalam event.
Koordinat yang dilaporkan adalah koordinat relatif widget ketika event
tersebut dibuat (bukan koordinat global layar atau aplikasi kita).
Karena user mungkin telah memindahkan mouse setelah menekan tombol, maka
lokasi sebenarnya ketika event ini ditangani mungkin berbeda dengan
ketika event dibuat. Hal ini untuk menghindari program kita untuk
bertindak terlalu sensitif terhadap pergerakan mouse. (Jika kita
membutuhkan lokasi yang aktual pada saat-saat tertentu, kita bisa
menggunakan metode getCursorLocation()
yang dimiliki oleh kelas Display
.)
Event pada mouse juga menggunakan field lain yang dinamakan stateMask
untuk menunjukkan keadaan mouse. Seperti pada penanda tombol, stateMask
berisi keadaan mouse sebelum terjadinya suatu event. Misalnya, jika
tidak ada tombol mouse yang ditekan atau tombol keyboard lain yang
ditekan ketika tombol kiri mouse ditekan, maka event mouse akan diisi
dengan button
bernilai 1 dan stateMask
bernilai 0. stateMask
tidak berisi "tombol 1". Akan tetapi ketika terjadi event lain ketika mouse kiri sedang ditekan, maka stateMask
akan berisi 1.
Berikut
ini adalah event pada mouse yang disediakan oleh SWT. Seperti
disebutkan pada bagian sebelumnya, event dan listener SWT terdiri dari
event/listener tanpa tipe dan event/listener bertipe. Keduanya disarikan
dalam tabel berikut :
Kelas Event (event bertipe) |
| Interface/Kelas Listener
(listener bertipe) | Metode
(listener bertipe) | Jenis event (event tanpa tipe) | Penjelasan |
MouseEvent |
| MouseListener
(dan
MouseAdapter) | mouseDoubleClick
(MouseEvent) | SWT.MouseDoubleClick | Mouse di-double click |
| mouseDown
(MouseEvent) | SWT.MouseDown | Tombol mouse ditekan |
| mouseUp
(MouseEvent) | SWT.MouseUp | Tombol mouse dilepaskan |
MouseEvent |
| MouseMove
Listener | mouseMove
(MouseEvent) | SWT.MouseMove | Mouse berpindah posisi |
MouseEvent |
| MouseTrackListener (dan MouseTrackAdapter) | mouseEnter
(MouseEvent) | SWT.MouseEnter | Mouse masuk ke wilayah klien |
| mouseExit
(MouseEvent) | SWT.MouseExit | Mouse berada di sekitar klien |
| mouseHover
(MouseEvent) | SWT.MouseHover | Mouse keluar dari wilayah klien |
Contoh Pemogramannya,
import
java.awt.*;
import
java.awt.event.*;
import
javax.swing.*;
public
class
MouseClicked
extends
JFrame {
private
int
koX, koY;
private
Font font;
public
MouseClicked() {
setTitle(
"Kelas MouseClicked"
);
addMouseListener(
new
PenanganMouse());
setSize(
280
,
130
);
setVisible(
true
);
}
class
PenanganMouse
extends
MouseAdapter {
public
void
mouseClicked(MouseEvent e) {
koX = e.getX();
koY = e.getY();
repaint();
}
}
public
void
paint(Graphics g) {
super
.paint(g);
font =
new
Font(
"Tahoma"
, Font.BOLD,
14
);
g.setFont(font);
g.setColor(Color.RED);
g.drawString(
"["
+ koX +
", "
+ koY +
"]"
, koX, koY);
}
public
static
void
main(String[] args) {
MouseClicked frame =
new
MouseClicked();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
langkah pertama membuat class MouseClicked :
Source codenya:
Outputnya Setelah Di Compile :
Sumber :
http://www.termasmedia.com/2012-05-29-02-56-17/java/298-penanganan-mouseevent-di-java-mouseclicked.html