web-dev-qa-db-fra.com

Comment ajouter un ActionListener sur un JButton dans Java

private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");

Comment puis-je ajouter des écouteurs d'action à ces boutons, de sorte qu'à partir d'une méthode principale, je puisse appeler actionperformed dessus, donc quand on clique dessus, je peux les appeler dans mon programme?

26
user37037

Deux voies:

1. Implémentez ActionListener dans votre classe, puis utilisez jBtnSelection.addActionListener(this); Plus tard, vous devrez définir une méthode, public void actionPerformed(ActionEvent e). Cependant, cela peut être déroutant pour plusieurs boutons, car la méthode actionPerformed devra vérifier la source de chaque événement (e.getSource()) pour voir de quel bouton il provient.

2. Utilisez des classes internes anonymes:

jBtnSelection.addActionListener(new ActionListener() { 
  public void actionPerformed(ActionEvent e) { 
    selectionButtonPressed();
  } 
} );

Plus tard, vous devrez définir selectionButtonPressed(). Cela fonctionne mieux lorsque vous avez plusieurs boutons, car vos appels à des méthodes individuelles pour gérer les actions sont juste à côté de la définition du bouton.

La deuxième méthode vous permet également d'appeler directement la méthode de sélection. Dans ce cas, vous pouvez appeler selectionButtonPressed() si une autre action se produit également, comme lorsqu'un minuteur se déclenche ou quelque chose (mais dans ce cas, votre méthode sera nommée différemment, peut-être selectionChanged()).

48
David Koelle

Votre meilleur pari est de revoir les tutoriels Java Swing , en particulier le tutoriel sur les boutons .

L'extrait de code court est:

jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );
7
Alex B

idk si cela fonctionne mais j'ai fait les noms de variables

public abstract class beep implements ActionListener {
public static void main(String[] args) {
    JFrame f = new JFrame("beeper");
    JButton button = new JButton("Beep me");
    f.setVisible(true);
    f.setSize(300, 200);
    f.add(button);
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //insert code here
        }
    } );

}

}

1
Ronald Ortiz

Je ne suis pas totalement suivi, mais pour ajouter un écouteur d'action, vous appelez simplement addActionListener (à partir du bouton abstrait). Si cela ne répond pas totalement à votre question, pouvez-vous fournir plus de détails?

0
AdamC