FocusListener Interface được sử dụng để nhận sự kiện liên quan tới keyboard focus. Lớp mà triển khai focus event cần triển khai interface này. Cú pháp để khai báo java.awt.event.FocusListener Interface là:
public interface FocusListener extends EventListener
Interface này kế thừa các phương thức từ lớp java.awt.EventListener.
Các phương thức của MouseListener Interface trong Java Swing
1. void focusGained(FocusEvent e): Được triệu hồi khi một thành phần nhận keyboard focus.
2. void focusLost(FocusEvent e): Được triệu hồi khi một thành phần mất keyboard focus.
Ví dụ FocusListener
package vn.viettuts.swing; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class FocusListenerExam1 { private JFrame mainFrame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public FocusListenerExam1(){ prepareGUI(); } public static void main(String[] args) { FocusListenerExam1 demo = new FocusListenerExam1(); demo.showFocusListenerDemo(); } private void prepareGUI() { mainFrame = new JFrame("Vi du Java Swing"); mainFrame.setSize(500, 300); mainFrame.setLayout(new GridLayout(3, 1)); headerLabel = new JLabel("", JLabel.CENTER); statusLabel = new JLabel("", JLabel.CENTER); statusLabel.setSize(350, 100); controlPanel = new JPanel(); controlPanel.setLayout(new FlowLayout()); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); mainFrame.setTitle("Ví dụ FocusListener trong Java Swing"); mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } private void showFocusListenerDemo() { headerLabel.setText("Listener in action: FocusListener"); JButton okButton = new JButton("OK"); JButton cancelButton = new JButton("Cancel"); okButton.addFocusListener(new CustomFocusListener()); cancelButton.addFocusListener(new CustomFocusListener()); controlPanel.add(okButton); controlPanel.add(cancelButton); mainFrame.setVisible(true); } class CustomFocusListener implements FocusListener { public void focusGained(FocusEvent e) { statusLabel.setText(statusLabel.getText() + e.getComponent().getClass().getSimpleName() + " gained focus. "); } public void focusLost(FocusEvent e) { statusLabel.setText(statusLabel.getText() + e.getComponent().getClass().getSimpleName() + " lost focus. "); } } }
Chạy chương trình trên cho kết quả như sau: