J
josimar
Gast
Hallo zusammen,
folgendes Problem:
Ich habe eine Klasse "Fenster" (extends JFrame) mit einem JButton (b).
Auf die Events des JButtons reagiere ich in der selben Klasse, d.h. die Klasse "Fenster" implementiert die ActionListener-Schnittstelle und dem Button wird ein ActionListener mit Verweis auf die "Fenster"-Instanz (also this) angefügt.
Das funktioniert soweit.
Jetzt will ich jedoch in einer anderen Klasse ("ListenerKlasse") auf das Drücken dieses Buttons reagieren. Diese Klasse "ListenerKlasse" implementiert also auch die ActionListener-Schnittstelle und dem Button wird wieder ein ActionListener, diesmal mit Verweis auf die Instanz der "ListenerKlasse", angefügt.
Problem: Die Methode actionPerformed in der "ListenerKlasse" wird offenbar nie ausgeführt.
Ich hab keine Ahnung worans liegt.
Soweit ich weiß, ist es doch egal, welche Instanz auf ein Event reagiert, solange die entsprechende Klasse einen ActionListener (=> und damit die actionPerformed-Methode) implementiert und der Button (bzw. allgemein das entsprechende Objekt) einen Listener mit Verweis auf die Klasse erhält.
Oder liege ich da grundsätzlich falsch??
Hier der Quellcode (aufs Notwendigste gestutzt, also auch nicht sehr schöner Stil):
Klasse "Fenster" - hier funktioniert alles
Klasse "Fenster"
folgendes Problem:
Ich habe eine Klasse "Fenster" (extends JFrame) mit einem JButton (b).
Auf die Events des JButtons reagiere ich in der selben Klasse, d.h. die Klasse "Fenster" implementiert die ActionListener-Schnittstelle und dem Button wird ein ActionListener mit Verweis auf die "Fenster"-Instanz (also this) angefügt.
Das funktioniert soweit.
Jetzt will ich jedoch in einer anderen Klasse ("ListenerKlasse") auf das Drücken dieses Buttons reagieren. Diese Klasse "ListenerKlasse" implementiert also auch die ActionListener-Schnittstelle und dem Button wird wieder ein ActionListener, diesmal mit Verweis auf die Instanz der "ListenerKlasse", angefügt.
Problem: Die Methode actionPerformed in der "ListenerKlasse" wird offenbar nie ausgeführt.
Ich hab keine Ahnung worans liegt.
Soweit ich weiß, ist es doch egal, welche Instanz auf ein Event reagiert, solange die entsprechende Klasse einen ActionListener (=> und damit die actionPerformed-Methode) implementiert und der Button (bzw. allgemein das entsprechende Objekt) einen Listener mit Verweis auf die Klasse erhält.
Oder liege ich da grundsätzlich falsch??
Hier der Quellcode (aufs Notwendigste gestutzt, also auch nicht sehr schöner Stil):
Klasse "Fenster" - hier funktioniert alles
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Fenster extends JFrame implements ActionListener
{
ListenerKlasse listenerKlasse;
public Fenster()
{
this.setTitle("Titel");
this.setSize(200, 100);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JButton b = new JButton("Button");
b.addActionListener(listenerKlasse); // Listener für "ListenerKlasse"
b.addActionListener(this);
this.getContentPane().add(b);
}
public void actionPerformed(ActionEvent arg0)
{
System.out.println("'Fenster-Listener' läuft.");
}
}
Klasse "Fenster"
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ListenerKlasse implements ActionListener{
public static void main(String[] args)
{
Fenster fenster = new Fenster();
fenster.listenerKlasse = new ListenerKlasse();
}
public void actionPerformed(ActionEvent e)
{
System.out.println("das hier wird nie ausgegeben");
}
}