KeyPreview di Java

Sebenarnya di Java tidak  ada istilah Keypreview tetapi saya benar-benar tidak tahu istilahnya di Java (kalau ada yang tahu langsung saja comment dibawah, biar judulnya nanti saya ganti :) )

Kalau anda sebelumnya adalah programmer Visual Basic ataupun Delphi pasti tidak asing lagi dengan property KeyPreview yang terdapat pada Form. KeyPreview di sini adalah seperti KeyListener tetapi kita cukup membuatnya di Form dan komputer akan secara otomatis menangkap semua penginputan yang dilakukan. Bedanya dengan KeyListener adalah KeyListener mengharuskan posisi focus harus terfocus pada control yang telah diberikan KeyListener sedangkan KeyPreview tidak mengharuskan focus, yang artinya selama frame tersebut aktif, posisi cursor fokus di component apapun, penginputan keyboard tetap terdeteksi.

Caranya ternyata  cukup gampang kita hanya cukup menggunakan InputMap dan ActionMap saja.

Berikut contoh codingnya :

private void setKeyPreview(){
     //ESCAPE
     getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "ESCAPE_PRESS");
     getRootPane().getActionMap().put("ESCAPE_PRESS", new AbstractAction() {
         public void actionPerformed(ActionEvent e) {
             dispose();
         }
     });
 }

Anda tinggal tambahkan method setKeyPreview pada setiap JFrame atau JInternalFrame atau JDialog, maka secara otomatis tombol escape akan berfungsi untuk menutup JFrame / JInternalFrame atau JDialog.

Salam, dan semoga bermanfaat

Popularity: 40% [?]

Tags: , , , ,

Leave a Reply