DynamicEvents.java Source code

Java tutorial

Introduction

Here is the source code for DynamicEvents.java

Source

// : c14:DynamicEvents.java
// You can change event behavior dynamically.
// Also shows multiple actions for an event.
// <applet code=DynamicEvents
// width=250 height=400></applet>
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class DynamicEvents extends JApplet {
    private java.util.List list = new ArrayList();

    private int i = 0;

    private JButton b1 = new JButton("Button1"), b2 = new JButton("Button2");

    private JTextArea txt = new JTextArea();

    class B implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            txt.append("A button was pressed\n");
        }
    }

    class CountListener implements ActionListener {
        private int index;

        public CountListener(int i) {
            index = i;
        }

        public void actionPerformed(ActionEvent e) {
            txt.append("Counted Listener " + index + "\n");
        }
    }

    class B1 implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            txt.append("Button 1 pressed\n");
            ActionListener a = new CountListener(i++);
            list.add(a);
            b2.addActionListener(a);
        }
    }

    class B2 implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            txt.append("Button2 pressed\n");
            int end = list.size() - 1;
            if (end >= 0) {
                b2.removeActionListener((ActionListener) list.get(end));
                list.remove(end);
            }
        }
    }

    public void init() {
        Container cp = getContentPane();
        b1.addActionListener(new B());
        b1.addActionListener(new B1());
        b2.addActionListener(new B());
        b2.addActionListener(new B2());
        JPanel p = new JPanel();
        p.add(b1);
        p.add(b2);
        cp.add(BorderLayout.NORTH, p);
        cp.add(new JScrollPane(txt));
    }

    public static void main(String[] args) {
        run(new DynamicEvents(), 250, 400);
    }

    public static void run(JApplet applet, int width, int height) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(applet);
        frame.setSize(width, height);
        applet.init();
        applet.start();
        frame.setVisible(true);
    }
} ///:~