Mega Code Archive

 
Categories / Java / Event
 

Display the addXXXListener methods of any Swing class

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