Java tutorial
// : 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); } } ///:~