# Java Notes

# Anonymous Listeners

## Using anonymous inner class listeners - a common idiom

There is no need to define a named class simply to add a listener object to a button. Java has a somewhat obscure syntax for creating an anonymous innner class listener that implements an interface. There is no need to memorize the syntax; just copy and paste it each time. For example,

    class myPanel extends JPanel {
    . . .
        public MyPanel() {
            . . .  //in the constructor
            JButton b1 = new JButton("Hello");
            b1.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        // do something for button b1
                    }
                }
            );

## Creates a class

The above example creates a subclass of `Object` that `implements` the `ActionListener` interface. The compiler creates names for anonymous classes. The JDK typically uses the enclosing class name followed by $ followed by a number, eg, you may see a `MyPanel$1.class` file generated by the compiler.