Program 13 : Event Handling
1. EventDemo Converted to Swing
java
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
// Swing JFrame with KeyListener and ActionListener
public class SwingEventDemo extends JFrame implements KeyListener, ActionListener {
JTextField tf;
JTextArea ta;
public SwingEventDemo() {
// --- 1. Frame Setup ---
setLayout(new FlowLayout());
setSize(350, 350);
setTitle("Swing Key and Action Event Demo");
// to handle closing a Swing window.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// --- 2. Component Setup (using Swing components) ---
tf = new JTextField(20);
ta = new JTextArea(10, 25);
ta.setEditable(false); // Make text area read-only
JButton b = new JButton("Clear");
// Add components to the frame's content pane
add(new JLabel("Enter Text:"));
add(tf);
add(new JLabel("Event Log:"));
// JTextArea needs to be put inside a JScrollPane to get scrollbars
add(new JScrollPane(ta));
add(b);
// --- 3. Register listeners to components ---
tf.addKeyListener(this);
b.addActionListener(this);
// --- 4. Make the frame visible ---
setVisible(true);
}
// -- KeyListener methods --
@Override
public void keyPressed(KeyEvent ke) {
ta.append("Key Pressed: "
+ ke.getKeyChar() + "\n");
}
@Override
public void keyReleased(KeyEvent ke) {
// Not used
}
@Override
public void keyTyped(KeyEvent ke) {
// Not used
}
// -- ActionListener method --
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Clear")) {
ta.setText("");
tf.setText("");
}
}
public static void main(String[] args) {
new SwingEventDemo();
}
}java
import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class KeyAdapterDemo extends JFrame {
private JLabel statusLabel;
public KeyAdapterDemo() {
// --- 1. Frame Setup ---
setSize(400, 200);
setTitle("Key Adapter Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// --- 2. Component Setup ---
statusLabel = new JLabel("Press any key...");
add(statusLabel);
// --- 3. Add the Key Listener using an Adapter Class ---
addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
statusLabel.setText("Key Typed: "
+ e.getKeyChar());
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
statusLabel.setText("Key Pressed: "
+ KeyEvent.getKeyText(keyCode));
}
});
// --- 4. Make the frame visible ---
setVisible(true);
}
public static void main(String[] args) {
new KeyAdapterDemo();
}
}2. AdapterDemo Converted to Swing
This conversion is very straightforward. Frame becomes JFrame, Label becomes JLabel, and the WindowAdapter for closing the application is replaced with the much simpler setDefaultCloseOperation method. The MouseAdapter works identically with Swing components.
java
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseAdapterDemo extends JFrame {
JLabel statusLabel;
public MouseAdapterDemo() {
// --- 1. Frame Setup ---
setLayout(new FlowLayout());
setTitle("Swing Adapter Class Demo");
setSize(400, 200);
// Simplified window closing for Swing
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// --- 2. Component Setup ---
statusLabel = new JLabel("No event yet.");
add(statusLabel);
// Use MouseAdapter to handle mouse events.
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me) {
statusLabel.setText("Mouse clicked at: ("
+ me.getX() + ", " + me.getY() + ")");
}
@Override
public void mouseEntered(MouseEvent me) {
statusLabel.setText("Mouse entered the window.");
}
@Override
public void mouseExited(MouseEvent me) {
statusLabel.setText("Mouse left the window.");
}
});
// --- 3. Make the frame visible ---
setVisible(true);
}
public static void main(String[] args) {
new MouseAdapterDemo();
}
}