ShowAddListeners.java Source code

Java tutorial

Introduction

Here is the source code for ShowAddListeners.java

Source

// : c14:ShowAddListeners.java
// Display the "addXXXListener" methods of any Swing class.
// <applet code=ShowAddListeners
// width=500 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.lang.reflect.Method;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ShowAddListeners extends JApplet {
    private JTextField name = new JTextField(25);

    private JTextArea results = new JTextArea(40, 65);

    private static Pattern addListener = Pattern.compile("(add\\w+?Listener\\(.*?\\))");

    private static Pattern qualifier = Pattern.compile("\\w+\\.");

    class NameL implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String nm = name.getText().trim();
            if (nm.length() == 0) {
                results.setText("No match");
                return;
            }
            Class klass;
            try {
                klass = Class.forName("javax.swing." + nm);
            } catch (ClassNotFoundException ex) {
                results.setText("No match");
                return;
            }
            Method[] methods = klass.getMethods();
            results.setText("");
            for (int i = 0; i < methods.length; i++) {
                Matcher matcher = addListener.matcher(methods[i].toString());
                if (matcher.find())
                    results.append(qualifier.matcher(matcher.group(1)).replaceAll("") + "\n");
            }
        }
    }

    public void init() {
        NameL nameListener = new NameL();
        name.addActionListener(nameListener);
        JPanel top = new JPanel();
        top.add(new JLabel("Swing class name (press ENTER):"));
        top.add(name);
        Container cp = getContentPane();
        cp.add(BorderLayout.NORTH, top);
        cp.add(new JScrollPane(results));
        // Initial data and test:
        name.setText("JTextArea");
        nameListener.actionPerformed(new ActionEvent("", 0, ""));
    }

    public static void main(String[] args) {
        run(new ShowAddListeners(), 500, 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);
    }
} ///:~