RKTechGame | Advanced Event Handling in Java Swing

Event Handling - Concept & Architecture

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.

Commonly Used Event Listeners

Event Handling Example with Multiple Listeners

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.

Event Dispatch Thread (EDT) ka Importance

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.