Frage zu ActionListenern und AvtionEvents

Dav60325

Neues Mitglied
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:
  1. Bei welchen Elementen sollen Events (also z.B. Mausclicks) festgestellt werden?
  2. Was soll passieren, wenn ein Event festgestellt wurde
  3. Was für Events sollen überhaupt festgestellt werden?
Die Antwort auf die ersten beiden o.a. Fragen ist mir hier (denke ich) klar:
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);
}
}
 

Anhänge

  • TestActionListeners.zip
    413,9 KB · Aufrufe: 2

LimDul

Top Contributor
a) Welches Objekt ruft denn die actionPerformed() Methode auf, wenn man auf den Button clickt? Der Button selbst?
Swing. Das GUI Framework sorgt dafür, dass du dir genau darüber keine Gedanken machen musst. Im Endeffekt ist es (vermutlich) der Button, der wiederum auf äußere Ereignisse reagiert.

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?
Du könntest z.B. einen ActionListener schreiben, der beim ausführen den Button disabled. Den hängst du per add an Button A und an Button B ran. Woher weiß der ActionListener welcher Button in ausgelöst hat? Nun, dafür gibt es im ActionEvent die Methode getSource, über den man an die Quelle rankommt. Der enthält halt Informationen über das durchgeführte Event (wer hat es ausgelöst, ggf. wodurch wurde es ausgelöst etc.). Es gibt viele Arten von Listenern, die ein "Event" Objekt mitbekommen. Bei einem Listener, der explizit auf Mausklicks reagiert, würde z.B. die X und Y Koordinate drinstehen, auf die geklickt wurde.

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?
Gar nicht. Du brauchst davon keine Objekte erstellen, das macht Swing für dich. Das nimmt dir das Gui-Framework ab, bei Klick (oder Enter) auf den Button dieses Objekt zu erstellen und mit den Meta-Informationen zu füllen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben