Hallo zusammen,
ich bin noch recht neu in der (Java)Programmierung und mir sind die ActionListener noch nicht ganz klar. Ich bekomme sie zwar zum laufen, verstehe aber das Konstrukt nicht so richtig. Es wäre klasse, wenn mir hier jemand helfen kann dies besser zu verstehen. Unten und auch angehängt als Archive file mein Code hierzu.
Losgelöst von der Umsetzung im Code, gilt es ja eigentlich nur drei Fragen zu beantworten, wenn ich eine Gui mit Bedienelementen (wie z.B. Buttons) habe:
Zu Frage 1: Bei dem button1 soll ein Event festgestellt werden, da zu diesem Button ein Action Listner „geadded“ wird (über die addActionListener Methode)
Zu Frage 2: Man erstellt selbst eine Klasse, die das ActionListener Interface implementiert. Innerhalb dieser Klasse definiert man die actionPerformed Methode und definiert so, was bei einem Event passieren soll.
Was mir nicht klar ist, ist aber Folgendes:
a) Welches Objekt ruft denn die actionPerformed() Methode auf, wenn man auf den Button clickt? Der Button selbst?
b) Wofür wird das ActionEvent benötigt? Es wird zwar als Parameter der actionPerformed() Methode übergeben, aber es passiert (zumindest in diesem Beispiel) nichts damit. Wofür könnte man das Event benutzen?
c) In meinem Beispiel habe ich selbst ein Objekt vom Typ das actionEvent erstellt. Ist aber vermutlich nicht sehr sinnvoll. Wie oder von von welchem Objekt sollte denn das actionEvent Objekt normalerweise erstellt werden?
Gruß,
David
_________________________________________
package testpackage;
public class Main {
public static void main(String[] args) {
Gui gui = new Gui();
gui.setVisible(true);
}
}
_________________________________________
package testpackage;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import actionlisteners.ActionListenerClassDavid;
public class Gui extends JFrame {
private JButton button1;
private JButton button2;
public Gui() {
setSize(400,400);
setLocationRelativeTo(null);
button1 = new JButton("Test Button 1");
button2 = new JButton("Test Button 2");
ActionEvent actionEvent = new ActionEvent(button1, 1001, "xxxxxxxxxxxxxxxxxxx");
ActionListenerClassDavid actionListnerObject = new ActionListenerClassDavid();
actionListnerObject.actionPerformed(actionEvent);
button1.addActionListener(actionListnerObject);
add(button1);
}
}
_________________________________________
package actionlisteners;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import testpackage.Gui;
public class ActionListenerClassDavid implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Actione was performed");
System.out.println("Action Event: " + e);
}
}
ich bin noch recht neu in der (Java)Programmierung und mir sind die ActionListener noch nicht ganz klar. Ich bekomme sie zwar zum laufen, verstehe aber das Konstrukt nicht so richtig. Es wäre klasse, wenn mir hier jemand helfen kann dies besser zu verstehen. Unten und auch angehängt als Archive file mein Code hierzu.
Losgelöst von der Umsetzung im Code, gilt es ja eigentlich nur drei Fragen zu beantworten, wenn ich eine Gui mit Bedienelementen (wie z.B. Buttons) habe:
- Bei welchen Elementen sollen Events (also z.B. Mausclicks) festgestellt werden?
- Was soll passieren, wenn ein Event festgestellt wurde
- Was für Events sollen überhaupt festgestellt werden?
Zu Frage 1: Bei dem button1 soll ein Event festgestellt werden, da zu diesem Button ein Action Listner „geadded“ wird (über die addActionListener Methode)
Zu Frage 2: Man erstellt selbst eine Klasse, die das ActionListener Interface implementiert. Innerhalb dieser Klasse definiert man die actionPerformed Methode und definiert so, was bei einem Event passieren soll.
Was mir nicht klar ist, ist aber Folgendes:
a) Welches Objekt ruft denn die actionPerformed() Methode auf, wenn man auf den Button clickt? Der Button selbst?
b) Wofür wird das ActionEvent benötigt? Es wird zwar als Parameter der actionPerformed() Methode übergeben, aber es passiert (zumindest in diesem Beispiel) nichts damit. Wofür könnte man das Event benutzen?
c) In meinem Beispiel habe ich selbst ein Objekt vom Typ das actionEvent erstellt. Ist aber vermutlich nicht sehr sinnvoll. Wie oder von von welchem Objekt sollte denn das actionEvent Objekt normalerweise erstellt werden?
Gruß,
David
_________________________________________
package testpackage;
public class Main {
public static void main(String[] args) {
Gui gui = new Gui();
gui.setVisible(true);
}
}
_________________________________________
package testpackage;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import actionlisteners.ActionListenerClassDavid;
public class Gui extends JFrame {
private JButton button1;
private JButton button2;
public Gui() {
setSize(400,400);
setLocationRelativeTo(null);
button1 = new JButton("Test Button 1");
button2 = new JButton("Test Button 2");
ActionEvent actionEvent = new ActionEvent(button1, 1001, "xxxxxxxxxxxxxxxxxxx");
ActionListenerClassDavid actionListnerObject = new ActionListenerClassDavid();
actionListnerObject.actionPerformed(actionEvent);
button1.addActionListener(actionListnerObject);
add(button1);
}
}
_________________________________________
package actionlisteners;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import testpackage.Gui;
public class ActionListenerClassDavid implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Actione was performed");
System.out.println("Action Event: " + e);
}
}