Use one inner class to handle events from two buttons : ActionListener « Swing Event « Java Tutorial






import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class MainClass extends JFrame {
  public static void main(String[] args) {
    new MainClass();
  }
  private JButton button1  = new JButton("Click Me!"), exitButton= new JButton("Exit");

  public MainClass() {
    this.setSize(275, 100);
    this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

    ClickListener cl = new ClickListener();

    JPanel panel1 = new JPanel();

    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        exitButton.doClick();
      }
    });

    button1.addActionListener(cl);
    panel1.add(button1);

    exitButton.addActionListener(cl);
    panel1.add(exitButton);
    this.add(panel1);

    this.setVisible(true);
  }

  private class ClickListener implements ActionListener {
    private int clickCount = 0;

    public void actionPerformed(ActionEvent e) {
      if (e.getSource() == button1) {
        clickCount++;
        if (clickCount == 1)
          button1.setText("clicked!");
        else
          button1.setText("clicked " + clickCount + " times!");
      } else if (e.getSource() == exitButton) {
        if (clickCount > 0)
          System.exit(0);
        else {
          JOptionPane.showMessageDialog(MainClass.this, "You must click at least once!",
              "Title", JOptionPane.ERROR_MESSAGE);
        }
      }
    }
  }
}








15.5.ActionListener
15.5.1.implements ActionListener and action class level variable
15.5.2.Handling an action listener
15.5.3.Check the event source in actionPerformed method
15.5.4.Use an Inner Class to handle the event
15.5.5.Use one inner class to handle events from two buttons
15.5.6.Get event source from ActionEvent
15.5.7.Add action listener to JTextField
15.5.8.ComboBox with ActionListenerComboBox with ActionListener
15.5.9.ActionEvent.getActionCommand()
15.5.10.Using an inner ActionListener class.