Dentro l'ActionPerformed devi usare il metodo getSource() per farti restituire il componente che ha provocato la chiamata al metodo. Con degli if puoi differenziare i comportamenti a seconda del componente chiamante e del suo stato. Ti posto un'esempio abbastanza comprensibile.
codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MioFrame extends JFrame implements ActionListener {
private JButton plainButton, fancyButton;
public MioFrame() {
//Creo il frame
super("MioFrame v1.0");
Container container = this.getContentPane();
container.setLayout(new FlowLayout());
plainButton = new JButton("Plain Button");
plainButton.addActionListener(this);
fancyButton = new JButton("Fancy Button");
fancyButton.addActionListener(this);
container.add(plainButton);
container.add(fancyButton);
this.setSize(275, 100);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
//Prendo l'oggetto che ha scatenato l'evento
Object source = e.getSource();
//A seconda dell'oggetto eseguo codice differente
if(source.equals(plainButton)) {
//A seconda del testo del bottone eseguo codice differente
if(plainButton.getText().equals("Plain Button")) {
plainButton.setText("Fghjk Button");
JOptionPane.showMessageDialog(this,"Hai premuto: " + e.getActionCommand());
} else {
plainButton.setText("Plain Button");
JOptionPane.showMessageDialog(this,"Faccio altro");
}
} else if(source.equals(fancyButton)) {
JOptionPane.showMessageDialog(this,"2+2 = 4");
}
}
public static void main(String[] args) {
new MioFrame();
}
}