Guten Tag,
ich habe folgendes Problem. Wenn ich mir in der Java Documentation anschaue, wie die Funktion addActionListener funktioniert, dann steht dort
Die Funktion erwartet also als Übergabe einen Datentyp des Interfaces ActionListener.
Bei folgendem Code Frage ich mich:
Warum nun addActionListener this übergeben wird, welches ja nur auf das aktuelle Objekt zeigt. Würde die Funktion nicht eher so etwas wie
übergeben bekommen? Denn this zeigt ja eher auf die Klasse BeispielListener, welche ja nicht vom Typ BeispielListener ist. Leider erklärt auch kein Lehrbuch genau, weshalb this verwendet werden kann, obwohl ein Datentyp vom Typ ActionListener erwartet wird. Könnte mir jemand erklären, weshalb dies möglich ist?
ich habe folgendes Problem. Wenn ich mir in der Java Documentation anschaue, wie die Funktion addActionListener funktioniert, dann steht dort
Java:
public void addActionListener(ActionListener l)
Die Funktion erwartet also als Übergabe einen Datentyp des Interfaces ActionListener.
Bei folgendem Code Frage ich mich:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
// Damit Objekte der Klasse BeispielListener
// zum ActionListener werden kann, muss das Interface
// ActionListener implementiert werden
public class BeispielListener extends JFrame implements ActionListener
{
JButton button1;
JButton button2;
JButton button3;
JLabel label;
JPanel panel;
public BeispielListener(){
this.setTitle("ActionListener Beispiel");
this.setSize(400, 200);
panel = new JPanel();
// Leeres JLabel-Objekt wird erzeugt
label = new JLabel();
//Drei Buttons werden erstellt
button1 = new JButton("Button 1");
button2 = new JButton ("Button 2");
button3 = new JButton ("Button 3");
//Buttons werden dem Listener zugeordnet
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
//Buttons werden dem JPanel hinzugefügt
panel.add(button1);
panel.add(button2);
panel.add(button3);
//JLabel wird dem Panel hinzugefügt
panel.add(label);
this.add(panel);
}
Warum nun addActionListener this übergeben wird, welches ja nur auf das aktuelle Objekt zeigt. Würde die Funktion nicht eher so etwas wie
Java:
ActionListener action = new BeispielListener();
button1.addActionListener(action);
übergeben bekommen? Denn this zeigt ja eher auf die Klasse BeispielListener, welche ja nicht vom Typ BeispielListener ist. Leider erklärt auch kein Lehrbuch genau, weshalb this verwendet werden kann, obwohl ein Datentyp vom Typ ActionListener erwartet wird. Könnte mir jemand erklären, weshalb dies möglich ist?
Zuletzt bearbeitet von einem Moderator: