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