Banner Java

Penanganan KeyEvent Di Java (keyPressed Dan keyTyped)

Di artikel Penanganan MouseEvent Di Java (MouseEntered Dan MouseExited), Anda dapat mempelajari bagaimana menangani event Java yang terkait dengan aksi (event) mouse. Di artikel kali ini, Anda diperkenalkan pada penanganan key event. Key event dipicu ketika sebuah tombol di keyboard ditekan. Sebuah kelas atau inner class yang bertindak sebagai obyek pendengar (listener object) harus mengimplementasikan interface KeyListener agar dapat mendengar adanya key event dan mendeklarasikan ulang semua metoda yang terdapat di interface KeyListener (keyPressed, keyReleased dan keyTyped). Ketiga metoda tersebut memerlukan kelas KeyAction sebagai argumen parameternya.

Anda dapat menggunakan metoda keyPressed untuk menangani event yang dipicu saat penekanan tombol apa saja di keyboard, metoda keyReleased untuk menangani event ketika penekanan tombol keyboard dilepas (setelah keyPressed atau keyTyped) dan metoda keyTyped untuk menangani penekanan tombol apa saja yang bukan merupakan sebuah action key. Action key merupakan tombol keyboard berupa tombol panah, Home, Page Up, End, Page Down, tombol-tombol fungsi (function key seperti F1, F2 dan seterusnya), Pause, Num Lock, Print Screen, Scroll Lock dan Caps lock.

Berikut ini adalah contoh program yang mendemonstrasikan penanganan keyEvent. Setiap Anda menekan tombol di keyboard, maka label yang terdapat di tombol keyboard akan ditampilkan di jendela frame. Penanganan KeyEvent hanya dilakukan di metoda keyPressed dan keyTyped (metoda keyReleased dideklarasikan ulang dengan blok kosong).

// Nama file : DemoKeyEvent.java
// Mendemonstrasikan penekanan tombol di keyboard

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

// Deklarasi kelas DemoKeyEvent
public class DemoKeyEvent extends JFrame implements KeyListener {

  private String str;
  private JLabel label;
  private Font font;
   
  public DemoKeyEvent() {

     font = new Font("Tahoma", Font.BOLD, 30);
     label = new JLabel("", JLabel.CENTER);
     label.setFont(font);
     label.setForeground(Color.BLUE);
     label.setHorizontalAlignment(SwingConstants.CENTER);

     Container container = getContentPane();
     container.setBackground(Color.YELLOW);
     container.add(label, BorderLayout.CENTER);

     addKeyListener(this);
  }

  // Deklarasi ulang metoda keyPressed
  public void keyPressed(KeyEvent ke) { 

     str = ke.getKeyText(ke.getKeyCode());      
     label.setText(str);
  }

  // Deklarasi ulang metoda keyReleased
  // dengan blok kosong
  public void keyReleased(KeyEvent ke) {

  }

  // Deklarasi ulang metoda keyTyped
  public void keyTyped(KeyEvent ke) {

     str = Character.toString(ke.getKeyChar());
     label.setText(str);
  }

  // Metoda main
  public static void main(String[] args) {

     DemoKeyEvent frame = new DemoKeyEvent();
     frame.setTitle("Kelas DemoKeyEvent");
     frame.setSize(280, 120);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setVisible(true);
  }
}

Baris nomor 28 adalah pernyataan untuk meregistrasi obyek pendengar (listener object) menggunakan metoda addKeyListener dari kelas Component. addKeyListener adalah metoda registrasi obyek pendengar apabila obyek tersebut berkeinginan untuk mendengarkan (listening) setiap event yang dipicu dari penekanan tombol di keyboard. Variabel acuan yang mengacu ke obyek pendengar merupakan argumen parameter metoda addKeyListener. Di pernyataan tersebut, argumen parameter metoda adalah kata kunci this. Kata kunci this mengacu ke obyek kelas DemoKeyEvent yang berfungsi sekaligus sebagai obyek pendengar (mengimplementasikan interface KeyListener).

Baris nomor 32 – 36 mendeklarasikan ulang metoda keyPressed dari interface KeyListener. Metoda keyPressed diminta atau dipanggil ketika tombol apa saja yang ada di keyboard ditekan. Di dalam blok metoda keyPressed, pernyataan baris nomor 34 digunakan untuk menampilkan label tombol keyboard yang ditekan. Metoda getKeyCode dari kelas KeyEvent (diacu oleh variabel ke) digunakan untuk mendapatkan virtual key code dari tombol yang ditekan. Di kelas KeyEvent yang digunakan sebagai argumen parameter metoda keyPressed, terdapat kumpulan konstanta (virtual key-code constant) yang mewakili setiap tombol di keyboard. Nilai yang dikembalikan oleh metoda getKeyCode kemudian diberikan ke metoda getKeyText. Nilai string berupa label tombol keyboard yang ditekan, yang dihasilkan oleh metoda getKeyText, kemudian di simpan di variabel string str. Baris nomor 35 adalah pernyataan untuk menampilkan nilai string yang tersimpan di variabel acuan str ke label (obyek kelas JLabel).

Baris nomor 40 – 42 adalah pernyataan untuk mendeklarasikan ulang metoda keyReleased dari interface KeyListener. Metoda keyReleased mempunyai blok kosong (tidak memiliki kode penanganan). Namun demikian, metoda ini tetap harus dideklarasikan karena semua metoda dari interface yang diimplementasi, harus dideklarasikan kecuali apabila kelas DemoKeyEvent merupakan kelas turunan dari KeyAdapter.

Baris nomor 45 – 49 adalah pernyataan untuk mendeklarasikan ulang metoda keyTyped dari interfes KeyListener. Di dalam metode ini, baris nomor 47 adalah pernyataan untuk menampilkan nilai unicode dari tombol karakter yang ditekan. Nilai karakter yang dihasilkan metoda getKeyChar kemudian diberikan ke metoda toString dari kelas Character untuk dikonversi dari tipe data char ke tipe acuan String. Nilai hasil konversi disimpan di variabel acuan str dan kemudian ditampilkan di label (baris nomor 48).

Penanganan KeyEvent 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.