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); } } |
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.