SecretTest.java Source code

Java tutorial

Introduction

Here is the source code for SecretTest.java

Source

/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly 
*/

// SecretTest.java
//A demonstration framework for the EventListenerList-enabled SecretLabel class
//

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class SecretTest extends JFrame {

    public SecretTest() {
        super("EventListenerList Demo");
        setSize(200, 100);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        SecretLabel secret = new SecretLabel("Try Clicking Me");
        final JLabel reporter = new JLabel("Event reports will show here...");
        secret.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                reporter.setText("Got it: " + ae.getActionCommand());
            }
        });
        getContentPane().add(secret, BorderLayout.NORTH);
        getContentPane().add(reporter, BorderLayout.SOUTH);
    }

    public static void main(String args[]) {
        SecretTest st = new SecretTest();
        st.setVisible(true);
    }
}

//SecretLabel.java
//An extension of the JLabel class that listens to mouse clicks and converts
//them to ActionEvents, which in turn are reported via an EventListenersList
//object
//

class SecretLabel extends JLabel {

    public SecretLabel(String msg) {
        super(msg);
        addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent me) {
                fireActionPerformed(
                        new ActionEvent(SecretLabel.this, ActionEvent.ACTION_PERFORMED, "SecretMessage"));
            }
        });
    }

    public void addActionListener(ActionListener l) {
        // We'll just use the listenerList we inherit from JComponent.
        listenerList.add(ActionListener.class, l);
    }

    public void removeActionListener(ActionListener l) {
        listenerList.remove(ActionListener.class, l);
    }

    protected void fireActionPerformed(ActionEvent ae) {
        Object[] listeners = listenerList.getListeners(ActionListener.class);
        for (int i = 0; i < listeners.length; i++) {
            ((ActionListener) listeners[i]).actionPerformed(ae);
        }
    }
}