go to previous page   go to home page   go to next page

Answer:

Registering a listener object establishes a channel of communication between the GUI object and the listener.


Registering the Listener

class ButtonFrame2 extends JFrame implements ActionListener
{
  JButton bChange ;

  // constructor   
  public ButtonFrame2() 
  {
    bChange = new JButton("Click Me!"); 
    setLayout( new FlowLayout() );  
    
    // register the ButtonFrame object as the listener for the JButton.
    bChange.addActionListener( this ); 
    
    add( bChange ); 
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );    
  }
   
  // listener method required by the interface
  public void  actionPerformed( ActionEvent evt)
  {
     . . . . . .
  }
}

In this program, the ButtonFrame2 object is registered as an ActionListener for its own button. Here is how this is done:

  1. bChange refers to the button.
  2. bChange.addActionListener( this ) registers a listener for its events.
  3. The listener is the ButtonFrame2 object.
    • The word this refers to the object being constructed, the frame.
  4. The statement tells the button, bChange, to run its method addActionListener() to register the frame (this) as a listener for button clicks.
  5. Now the frame is listening for actionEvents from the button.
  6. Events will be sent to the actionPerformed() method

You might think that the ButtonFrame2 frame should automatically be registered as the listener for all of the GUI components it contains. But this would eliminate the flexibility that is needed for more complicated GUI applications.


QUESTION 13:

You want the program to do something when the button is clicked. Where should the code to "do something" go?