Banner Java

Penanganan MouseEvent Di Java (mouseEntered Dan mouseExited)

Di Java, beberapa komponen berbeda dapat memicu tipe event (aksi) yang sama dan beberapa komponen dapat memicu lebih dari satu event berbeda. Mouse event akan dipicu ketika sebuah mouse ditekan (pressed), melepas tekanan mouse (released), mengklik mouse (clicked), mengarahkan pointer mouse (entered), menjauhkan pointer mouse (Exited), menggerakkan mouse (moved) dan menekan sambil menggerakkan mouse (dragged). Obyek pendengar mouse event harus mengimplementasikan salah satu atau kedua interface yaitu MouseListener dan MouseMotionListener. Obyek pendengar juga harus mendeklarasikan semua metoda dari salah satu atau kedua interface tersebut tergantung pada interface yang diimplementasikan.

Obyek pendengar mouse event yang mengimplementasikan interface MouseListener harus mendeklarasikan ulang semua metoda yang terdapat di interface tersebut (mousePressed, mouseClicked, mouseEntered, mouseReleased dan mouseExited), sedangkan untuk obyek pendengar yang mengimplementasikan interface MouseMotionListener harus mendeklarasikan ulang semua metoda di interface tersebut (mouseDragged dan mouseMoved). Apabila obyek pendengar mengimplementasikan kedua interface, maka semua metoda dari kedua interface harus dideklarasikan ulang sekalipun tidak semua metoda akan digunakan untuk menangani mouse event. Anda dapat menggunakan obyek kelas MouseEvent (bertindak sebagai argumen dari parameter semua metoda) untuk memperoleh nilai properti yang berkaitan dengan mouse event.

Berikut ini adalah contoh program yang menggunakan metoda mouseEntered dan mouseExited untuk merubah warna jendela form aplikasi. Saat pointer berada di atas jendela, jendela akan berubah menjadi waarna kuning dan apabila pointer berada diluar area jendela, jendela akan berubah menjadi warna putih.

// Nama file : EnteredExited.java
// Merubah warna jendela menggunakan mouseEntered dan mouseExited

// Mengimpor kelas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

// Deklarasi kelas
public class EnteredExited extends JFrame {

   private Font font;
   private JLabel label;
 
   public EnteredExited() {

      Container container = getContentPane();
      container.setLayout(new BorderLayout());

      Jendela jendela = new Jendela();
      jendela.setBackground(Color.WHITE);
      container.add(jendela, BorderLayout.CENTER);

      font = new Font("Tahoma", Font.BOLD, 14);
      label = new JLabel("Pointer berada di luar area.");
      label.setHorizontalAlignment(SwingConstants.CENTER);
      label.setFont(font);
      label.setForeground(Color.BLUE);
      container.add(label, BorderLayout.PAGE_END);
   }

   class Jendela extends JPanel implements MouseListener {

      public Jendela() {
      // Meregistrasi listener
         addMouseListener(this);
      }

      // Deklarasi ulang metoda mousePressed
      public void mousePressed(MouseEvent e) {
      }

      // Deklarasi ulang metoda mouseReleased
      public void mouseReleased(MouseEvent e) {
      }

      // Deklarasi ulang metoda mouseClicked
      public void mouseClicked(MouseEvent e) {
      }

      // Deklarasi ulang metoda mouseEntered
      public void mouseEntered(MouseEvent e) {
   
         this.setBackground(Color.YELLOW);
         label.setText("Pointer berada di dalam area.");
      }

      // Deklarasi ulang metoda mouseExited
      public void mouseExited(MouseEvent e) {
 
         this.setBackground(Color.WHITE);
         label.setText("Pointer berada di luar area.");
      }
   }

   public static void main(String[] args) {
      EnteredExited frame = new EnteredExited();
      frame.setTitle("Kelas EnteredExited");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(300, 150);
      frame.setVisible(true);
   }
}

Program di atas terdiri dari dua kelas. Kelas pertama adalah kelas EnteredExited (baris nomor 10 – 73) yang merupakan turunan dari kelas JFrame dan yang kedua adalah kelas Jendela (baris nomor 32 – 64). Kelas Jendela adalah inner class yang merupakan turunan langsung dari kelas JPanel dan mengimplementasikan interface MouseListener. Baris nomor 34 – 37 adalah blok konstruktor kelas Jendela. Di dalam konstruktor inner class ini, obyek pendengar (obyek kelas Jendela yang diwakili oleh kata kunci this) diregistrasi menggunakan metoda registrasi addMouseListener.

Ketika Anda melakukan aksi menekan mouse (pressed), melepaskan tekanan mouse (released), mengklik mouse (clicked) saat pointer berada di area panel, menggerakkan pointer ke area panel (entered) atau menggerakkan pointer keluar dari area panel (exited), mouse event akan dipicu. Karena inner class Jendela mengimplementasikan interfes MouseListener, maka semua metoda dari interface tersebut harus dideklarasikan kembali. Dari semua metoda yang dideklarasikan (baris nomor 40 – 63), program hanya difokuskan pada dua metoda yaitu mouseEntered dan mouseExited (metoda yang lain tetap dideklarasikan tetapi tidak diberi pernyataan untuk penanganan event).

Saat pointer mouse berada di area panel, maka mouse event akan dipicu dan metoda mouseEntered akan dieksekusi yaitu merubah warna background panel menjadi kuning dan kemudian merubah nilai literal string label. Demikian pula sebaliknya, saat pointer mouse bergerak keluar area panel, maka mouse event akan dipicu kembali dan metoda mouseExited akan dieksekusi yaitu merubah warna background panel menjadi putih dan kemudian merubah kembali nilai literal string label.

Penanganan MouseEvent di Java

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.