Handling a JButton event

Register a class that implements the ActionListener interface to your JButton and handle the event in the method actionPerformed. If you register the same ActionListener class to a number of JButtons, you can distinguish what JButton was clicked by querying the component source (getSource) or by querying the actionCommand (getActionCommand). Here’s an example:

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
 
public class Main extends JFrame
{
   JTextField textfield;
   JButton button;
   JLabel label;
 
   public Main() {
      button = new JButton("Greet me!");
 
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
 
            if (ae.getSource() == button)
               label.setText("Hello " + textfield.getText());
 
            /*  OR:
            if (ae.getActionCommand().equals("Greet me!"))
               label.setText("Hello " + textfield.getText());
            */
         }
      });
 
      JPanel panel = new JPanel(new GridLayout(1, 2));
      textfield = new JTextField(20);
      panel.add(textfield);
      panel.add(button);
      getContentPane().add(BorderLayout.NORTH, panel);
      label = new JLabel();
      getContentPane().add(BorderLayout.CENTER, label);
 
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent we) {
            System.exit(0);
         }
      });
 
      setSize(300, 100);
   }
 
   public static void main(String []args) {
      Main main = new Main();
      main.setVisible(true);
   }
}

The previous example creates a no-name class of the interface ActionListener and directly adds the implementation of all its defined methods (actionPerformed). Note that you do not have to test for what JButton was pressed as you add the no-name ActionListener class only to this JButton.
Another option is to provide an object of a class that implements the ActionListener interface. However, in this case you would have to test for what button was clicked, that is if you have more than one button.

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
 
public class Main extends JFrame implements ActionListener
{
   JTextField textfield;
   JButton button;
   JLabel label;
 
   public Main() {
      button = new JButton("Greet me!");
 
      button.addActionListener(this);
 
      JPanel panel = new JPanel(new GridLayout(1, 2));
      textfield = new JTextField(20);
      panel.add(textfield);
      panel.add(button);
      getContentPane().add(BorderLayout.NORTH, panel);
      label = new JLabel();
      getContentPane().add(BorderLayout.CENTER, label);
 
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent we) {
            System.exit(0);
         }
      });
 
      setSize(300, 100);
   }
 
   public void actionPerformed(ActionEvent ae) {
      if (ae.getSource() == button)
         label.setText("Hello " + textfield.getText());
   }
  
   public static void main(String []args) {
      Main main = new Main();
      main.setVisible(true);
   }
}