Banner Java

Penanganan FocusEvent Di Java (focusGained Dan focusLost)

Di artikel berikut Penanganan MouseEvent Di Java (mouseEntered Dan mouseExited), Penanganan MouseEvent Di Java (mouseClicked) dan Penanganan KeyEvent Di Java (keyPressed Dan keyTyped), Anda dapat mempelajari bagaimana menangani event yang dipicu oleh aksi mouse dan tombol keyboard. Kali ini, Anda diperkenalkan pada penanganan focus event. Focus event dipicu ketika sebuah komponen memperoleh atau kehilangan focus. kelas atau inner class yang bertindak sebagai listener object harus mengimplementasikan interface FocusListener untuk dapat merespon adanya focus event serta mendeklarasikan ulang semua metoda yang terdapat di interface FocusListener (focusGained dan focusLost). Kedua metoda interface FocusListener memerlukan kelas FocusEvent sebagai argumen parameternya. Alternative lain adalah Anda dapat menggunakan anonymous inner class untuk merespon adanya focus event.

Berikut ini adalah contoh program yang mendemonstrasikan penanganan focus event. Program menggunakan tiga komponen untuk maksud tersebut yaitu kelas JButton, JTextField dan JCheckBox. Untuk setiap komponen yang mendapatkan fokus atau kehilangan focus, nama kelas dari obyek komponen berasal akan ditampilkan di jendela Command Prompt.

// Nama file : DemoFocusEvent.java
// Mendemonstrasikan focus event

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

// Deklarasi kelas
public class DemoFocusEvent extends JFrame implements FocusListener{

   private JButton button;
   private JTextField textField;
   private JCheckBox checkBox;
   private Font font;

   public DemoFocusEvent() {

      Container container = getContentPane();
      container.setBackground(Color.WHITE);
      container.setLayout(new GridLayout(1, 3));

      font = new Font("Tahoma", Font.BOLD, 14); 

      button = new JButton("JButton");
      button.setFont(font);
      container.add(button);

      checkBox = new JCheckBox("JCheckBox");
      checkBox.setFont(font);
      container.add(checkBox);

      textField = new JTextField("JTextField");
      textField.setFont(font);
      container.add(textField);

      button.addFocusListener(this);
      checkBox.addFocusListener(this);
      textField.addFocusListener(this);

   }

   // Mendeklarasikan ulang metoda focusGained
   public void focusGained(FocusEvent fe) {
      tampilkanPesan("FOCUS GAINED : ", fe);
   }

   // Mendeklarasikan ulang metoda focusLost
   public void focusLost(FocusEvent fe) {
      tampilkanPesan("FOCUS LOST : ", fe);
   }

   // Metoda tampilkanPesan
   public void tampilkanPesan(String fcsEvent, FocusEvent fe) {
      System.out.println(fcsEvent + fe.getComponent().getClass().getName());
   }

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

      DemoFocusEvent frame = new DemoFocusEvent();
      frame.setTitle("Kelas DemoFocusEvent");
      frame.setSize(320, 90);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

Apabila sebuah komponen mendapatkan fokus, maka metoda focusGained di baris nomor 44 – 46 akan dieksekusi. Apabila sebuah komponen kehilangan focus, maka metoda focusLost di baris nomor 49 – 51 yang akan dieksekusi. Baik metoda focusGained dan focusLost, kedua-duanya akan memanggil metoda tampilkanPesan (baris nomor 54 dan 56) untuk mencetak nama kelas dari komponen yang mendapatkan fokus atau komponen yang kehilangan fokus.

Metoda tampilkanPesan memerlukan dua buah argumen. Argumen pertama adalah variabel acuan ke obyek string fcsEvent. Literal string dari variabel acuan fcsEvent hanya menyatakan dua jenis status fokus untuk sebuah komponen yaitu literal “FOCUS GAINED” dan “FOCUS LOST”. Argumen kedua adalah variabel acuan fe yang mengacu ke obyek dari kelas FocusEvent. Di metoda tampilkanPesan, baris nomor 55 adalah pernyataan untuk menampilkan string di jendela Command Prompt yang merupakan kombinasi string yang terdiri dari status fokus komponen dan nama kelas dari komponen yang mempunyai status. Untuk mendapatkan nama kelas untuk komponen di focus event, dapat digunakan pernyataan fe.getComponen().getClass().getName(), dimana fe adalah variabel acuan yang mengacu ke obyek kelas FocusEvent.

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