2008-11-12 1 views
22
private JButton jBtnDrawCircle = new JButton("Circle"); 
private JButton jBtnDrawSquare = new JButton("Square"); 
private JButton jBtnDrawTriangle = new JButton("Triangle"); 
private JButton jBtnSelection = new JButton("Selection"); 

hinzufügen Wie füge ich Aktion Hörer auf diese Tasten, so dass ich von einem Hauptverfahren actionperformed auf sich nennen kann, so dass, wenn sie angeklickt wird ich sie in anrufen mein Programm?Wie kann eine Action auf einen JButton in Java

Antwort

1

Ich bin nicht ganz folgen, sondern eine Aktion Hörer hinzufügen möchten, rufen Sie einfach addActionListener (von der abstrakten Taste). Wenn dies Ihre Frage nicht vollständig beantwortet, können Sie weitere Einzelheiten angeben?

40

Zwei Möglichkeiten:

1. Action in Ihrer Klasse implementieren, dann jBtnSelection.addActionListener(this); Später verwenden, werden Sie eine menthod definieren müssen, public void actionPerformed(ActionEvent e). Dies kann jedoch für mehrere Schaltflächen verwirrend sein, da die Methode actionPerformed die Quelle jedes Ereignisses überprüfen muss (e.getSource()), um zu sehen, von welcher Schaltfläche sie stammt.

2. Verwenden anonyme innere Klassen:

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

Später werden Sie selectionButtonPressed() definieren. Dies funktioniert besser, wenn Sie mehrere Schaltflächen haben, da Ihre Aufrufe an einzelne Methoden zur Behandlung der Aktionen direkt neben der Definition der Schaltfläche sind.

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 stattfindet - etwa wenn ein Timer abläuft oder etwas anderes (aber in diesem Fall würde Ihre Methode etwas anderes heißen, vielleicht selectionChanged()).

+0

Sie löste meine Verwirrung, vielen Dank –

+0

@Sara - Froh, dass geholfen! Wenn Sie weitere Erläuterungen benötigen, füge ich sie gerne dieser Antwort hinzu. –

+0

Wenn jemand fragt: Wie kann eine Komponente ihre eigenen Ereignisse behandeln? ist die Antwort auf diese Frage zu anonymen inneren Klassen wie Sie hier gezeigt verwenden? –

Verwandte Themen