Program Java menangani FocusEvent focusGained focusLost
Menangani FocusEvent focusGained focusLost Di Program Java
Di beberapa artikel berikut Penanganan MouseEvent (mouseEntered Dan mouseExited) Di Java, Penanganan MouseEvent (mouseClicked) Di Java  dan Penanganan KeyEvent (keyPressed Dan keyTyped) Di Java, Anda dapat mempelajari cara 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.

Di program Java, kelas atau inner class yang bertindak sebagai obyek listener harus mengimplementasikan interface FocusListener untuk merespon adanya focus event serta mendeklarasikan ulang semua metoda dari interface FocusListener (focusGained dan focusLost). Kedua metoda interface FocusListener perlu 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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// 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);
   }
}

Penanganan FocusEvent di bahasa pemrograman Java

Bila sebuah komponen mendapatkan fokus, metoda focusGained di baris nomor 44 – 46 dieksekusi. Bila sebuah komponen kehilangan focus, metoda focusLost di baris nomor 49 – 51 dieksekusi. Kedua metoda focusGained maupun focusLost 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 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 dalam metoda tampilkanPesan, baris nomor 55 adalah pernyataan 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 dari komponen di focus event, digunakan pernyataan fe.getComponen().getClass().getName(), dimana fe adalah variabel acuan yang mengacu ke obyek kelas FocusEvent.