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
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 :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.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,
// Nama file : MouseClicked.java
// Menampilkan koordinat saat mouse diklik
// Mengimpor kelas
import
java.awt.*;
import
java.awt.event.*;
import
javax.swing.*;
// Deklarasi kelas
public
class
MouseClicked
extends
JFrame {
private
int
koX, koY;
private
Font font;
// Konstruktor kelas MouseClicked
public
MouseClicked() {
setTitle(
"Kelas MouseClicked"
);
addMouseListener(
new
PenanganMouse());
setSize(
280
,
130
);
setVisible(
true
);
}
// Deklarasi inner class PenanganMouse
class
PenanganMouse
extends
MouseAdapter {
public
void
mouseClicked(MouseEvent e) {
koX = e.getX();
koY = e.getY();
repaint();
}
}
// Metoda paint untuk menggambar string
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);
}
// Metoda main
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
0 comments:
Post a Comment