it-swarm.com.de

Wie fügt man einen ActionListener in 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");

Wie füge ich diesen Schaltflächen Aktionslistener hinzu, sodass ich von einer Hauptmethode aus actionperformed aufrufen kann, damit ich sie in meinem Programm aufrufen kann, wenn sie angeklickt werden?

26
user37037

Zwei Wege:

1. Implementieren Sie ActionListener in Ihre Klasse und verwenden Sie dann jBtnSelection.addActionListener(this);. Später müssen Sie einen Menthod definieren, public void actionPerformed(ActionEvent e). Dies für mehrere Schaltflächen zu tun, kann jedoch verwirrend sein, da die actionPerformed -Methode die Quelle jedes Ereignisses (e.getSource()) überprüfen muss, um festzustellen, von welcher Schaltfläche es stammt.

2. Verwenden Sie anonyme innere Klassen:

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

Später müssen Sie selectionButtonPressed() definieren. Dies funktioniert besser, wenn Sie über mehrere Schaltflächen verfügen, da Ihre Aufrufe einzelner Methoden zur Abwicklung der Aktionen direkt neben der Definition der Schaltfläche stehen.

Mit der zweiten Methode können Sie die Auswahlmethode auch direkt aufrufen. In diesem Fall können Sie selectionButtonPressed() aufrufen, wenn auch eine andere Aktion ausgeführt wird, z. B. wenn ein Timer abläuft oder etwas anderes (in diesem Fall würde Ihre Methode jedoch einen anderen Namen haben, z. B. selectionChanged()).

48
David Koelle

Am besten lesen Sie die Java Swing-Tutorials , insbesondere die Tutorials zu Schaltflächen .

Das Kurzcode-Snippet lautet:

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

idk wenn das geht hab ich aber die variablennamen gemacht

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

Ich bin nicht ganz gefolgt, aber um einen Aktionslistener hinzuzufügen, rufen Sie einfach addActionListener (von Abstract Button) auf. Wenn dies Ihre Frage nicht vollständig beantwortet, können Sie weitere Details angeben?

0
AdamC