Java Swing me user interactions ko capture karne aur handle karne ke liye event handling ka concept hota hai. Jab user kisi GUI component se interact karta hai, to ek event generate hota hai. Ye event ek listener object ke pass jata hai jo us event ko process karta hai.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class AdvancedEventHandlingDemo extends JFrame {
private JButton button;
private JTextField textField;
public AdvancedEventHandlingDemo() {
setTitle("Advanced Event Handling Demo");
setSize(400, 200);
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("Click Me");
textField = new JTextField(20);
add(button);
add(textField);
// ActionListener for button
button.addActionListener(e -> JOptionPane.showMessageDialog(null, "Button Clicked"));
// MouseListener for button
button.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
button.setBackground(Color.GREEN);
}
public void mouseExited(MouseEvent e) {
button.setBackground(null);
}
});
// KeyListener for text field
textField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
System.out.println("Key Typed: " + e.getKeyChar());
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new AdvancedEventHandlingDemo().setVisible(true);
});
}
}
Is program me multiple event listeners use kiye gaye hain: button click, mouse enter/exit aur keyboard typing.
Swing me GUI related code hamesha Event Dispatch Thread (EDT) par run karna chahiye. EDT GUI components ki thread-safe handling karta hai, isliye Swing applications me hamesha SwingUtilities.invokeLater()
se GUI create karna best practice hai.