Action Listener in innerer Klasse ausführen.

shanahan

Mitglied
Hallo Leute,

ich hab folgendes Problem: Ich soll ein kleines Programm zur Simulation eines Bankautomaten schreiben.
Dabei kann man zu Beginn auf dem Bildschirm über die Buttons auswählen2 und auswählen 3 zwischen der Option Beenden und der Option einloggen wählen. Wenn die Option einloggen gewählt wird, soll man auf dem Bildschirm über ein Numpad seine Kontonummer eingeben. Hier nun mein Problem: Ich habe die Buttons auswählen2 und auswählen 3 in einen ActionListener eingefügt; wird nun auswählen3 gedrückt, schließt das Programm ohne Probleme. Drücke ich aber auswählen 2, sollte er eigentlich in der inneren Klasse die Methode actionperformed aufrufen und die Zahlen, die gedrückt werden, auf dem Bildschirm ausgeben(der Einfach halt halber habe ich bis jetzt nur den einser button zum ActionListener hinzugefügt).
Anscheinend wird aber diese methode in der inneren Klasser erst garnicht aufgerufen :eek::eek: .
Habt ihr irgendeine Idee wie ich das implementieren kann?
Vielen Dank schonmal im Vorraus.


Java:
public void zum_ActionListener_hinzufügen()
    {
        auswählen1.addActionListener(this);
        auswählen2.addActionListener(this);
        auswählen3.addActionListener(this);

        bestätigen.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e)
    {
        Object object = e.getSource();
        if(auswählen3 == object)
        {
            bildschirm.setText("Vielen Dank für ihren Besuch");
            System.exit(0);
        }

        else if(auswählen2 == object)
        {
            bildschirm.setText("Bitte geben Sie nun im folgenden Ihre Kontonummer ein");
            
            class einloggen implements ActionListener
            {

                public einloggen()
                {
                    eins.addActionListener(this);}

                public void actionPerformed(ActionEvent e)
                {
                    Object object = e.getSource();

                    if(object == eins) {
                        bildschirm.setText("1"); ;}

                    else if(object == zwei) {
                        bildschirm.append("2"); }

                    else if(object == drei) {
                        bildschirm.append("3"); }

                    else if(object == vier) {
                        bildschirm.append("4"); }

                    else if(object == fünf) {
                        bildschirm.append("5"); }

                    else if(object == sechs) {
                        bildschirm.append("6"); }

                    else if(object == sieben) {
                        bildschirm.append("7"); }

                    else if(object == acht) {
                        bildschirm.append("8"); }

                    else if(object == neun) {
                        bildschirm.append("9"); }

                    else if(object == Null) {
                        bildschirm.append("0"); }

                    else if(object == bestätigen) {

                    } } }

        }
 

turtle

Top Contributor
Ich mag diese Art der Programmierung nicht, wo in einem ActionListener geprüft wird, welches Objekt eigentlich der Auslöser war und dann verzweigt. Erinnert mich an frühere, nicht-OO, Zeiten;)

Ich implementiere für so etwas immer anonyme ActionListener-Klassen.
Java:
		auswählen1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// Dein Code
				}
			}

		});
Damit ist klar, welcher Listener zuständig ist und man muss nicht in einer riesigen Verteil-Schleife rumfuhrwerken. Dein Ansatz macht nur in seltenen Fällen Sinn, wenn nämlich der Code im ActionListener praktiisch immer der gleiche ist.
 
M

Marcinek

Gast
Man würde hier eher jedem Button die Information, die er anhängen soll nachdem man ihn gedrückt hat mitgeben.

Die anonymen Listener sind hier kaum ein Vorteil.
 

bERt0r

Top Contributor
Da ich mal annehme, dass der Text deines Buttons einfach die Zahl ist die er repräsentiert, kannst du auch einfach auf die getActionCommand Methode zugreifen. Die liefert standardmäßig den Text des Buttons zurück, von dem der Aufruf kam.
Java:
class NumButtonActionListener implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent e)
		{
			String text=textField.getText();
			text=text.concat(e.getActionCommand());
			textField.setText(text);
		}
	}
 

GUI-Programmer

Top Contributor
Na was denn nun, anonyme Listener oder nicht? :)

Also falls es für dich Sinn macht nach MVC zu programmieren, also dein Projekt schon etwas größer ist, dann solltest du weder innere noch anonyme Klassen für deine Listener verwenden, sondern Klassen, die Listener implementieren. Siehe MVC Beispiel aus meiner Signatur.

Ansonsten, wenn dein Projekt nur aus ein paar Klassen besteht (<5) und diese auch nicht gerade groß sind (<500 Zeilen) dann würde ich dir raten anonymen Klassen zu benutzen.
 
C

Camino

Gast
Hmm, es gibt ja auch noch die Möglichkeit, sich Action-Klassen (abgeleitet von AbstractAction) anzulegen, die man dann beim Erstellen der Buttons einfach mit übergibt. Ist ja dann eigentlich ähnlich wie ein ActionListener, hat also auch die Methode actionPerformed mit dem ActionEvent. Wie ist das eigentlich im Vergleich zu den anderen Möglichkeiten einzuschätzen? Besser, schlechter, egal?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
S Combo Box action listener AWT, Swing, JavaFX & SWT 2
A Action listener von Button AWT, Swing, JavaFX & SWT 5
0 (Action)Listener auslagern? AWT, Swing, JavaFX & SWT 9
F Problem mit Action Listener in privater inneren Klasse AWT, Swing, JavaFX & SWT 6
A Action Listener AWT, Swing, JavaFX & SWT 14
G Action Listener erzeugen AWT, Swing, JavaFX & SWT 6
M JavaFX Button action abhängigkeit von Tab AWT, Swing, JavaFX & SWT 1
Z Befehl Action Event Verlassen AWT, Swing, JavaFX & SWT 4
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
S Action durchführen beim Programm beenden AWT, Swing, JavaFX & SWT 3
K Swing KeyBinding: Action wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
K Array von einer Action zur anderen bringen AWT, Swing, JavaFX & SWT 7
T action für Button übergeben - bitte um Segen AWT, Swing, JavaFX & SWT 1
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
I Button Action AWT, Swing, JavaFX & SWT 6
C Swing MenuItem feuert Action nur wenn disabled AWT, Swing, JavaFX & SWT 2
J SWT Rechteck Füllfarbe wird bei Action falsch gefüll AWT, Swing, JavaFX & SWT 2
D Drag-Action: Innerhalb meiner View? AWT, Swing, JavaFX & SWT 3
alex_fairytail Swing Textfeld Action wenn geschrieben wird? AWT, Swing, JavaFX & SWT 6
R innere Action -> auf äußeres this zugreifen AWT, Swing, JavaFX & SWT 3
P Action Event abfangen etwas anders? AWT, Swing, JavaFX & SWT 2
N Swing nach Fensterrand Action ausführen? HILFE AWT, Swing, JavaFX & SWT 7
L ComboBox in Action AWT, Swing, JavaFX & SWT 4
M SWT Jface Action und localised Strings AWT, Swing, JavaFX & SWT 6
I Button Action AWT, Swing, JavaFX & SWT 4
K GUI, Action AWT, Swing, JavaFX & SWT 4
B Frage zu Button-Action AWT, Swing, JavaFX & SWT 3
J Action before actionPerformed! AWT, Swing, JavaFX & SWT 4
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
M JButton Action Problem AWT, Swing, JavaFX & SWT 3
K Action.MNEMONIC mit char belegen. AWT, Swing, JavaFX & SWT 2
M Action.DISPLAYED_MNEMONIC_INDEX_KEY geht nicht mehr AWT, Swing, JavaFX & SWT 2
O Action Event auslösen bei unbekanntem JTextField AWT, Swing, JavaFX & SWT 3
G SWT ApplicationActionBarAdvisor Action AWT, Swing, JavaFX & SWT 11
G Action? AWT, Swing, JavaFX & SWT 2
K kleine frage zum Spinner (bezüglich Action) AWT, Swing, JavaFX & SWT 2
S Action Handler JButton AWT, Swing, JavaFX & SWT 15
S Buttons werden nach action grau AWT, Swing, JavaFX & SWT 4
S Action mit 2 verschiednen texten AWT, Swing, JavaFX & SWT 2
A SWT: Action über Hotkey ausführen AWT, Swing, JavaFX & SWT 2
G Action.setCheck(boolean)? AWT, Swing, JavaFX & SWT 6
A Mit der Combobox eine Action auslösen AWT, Swing, JavaFX & SWT 2
X Action aktivieren AWT, Swing, JavaFX & SWT 2
J mehrere Action Buttons mit einer ActionListener Methode AWT, Swing, JavaFX & SWT 7
S JMenuBar mit Action belegen! AWT, Swing, JavaFX & SWT 5
R action performed und IOException AWT, Swing, JavaFX & SWT 4
F Wo kann ich eine Action einsetzen? AWT, Swing, JavaFX & SWT 2
F Action ausführen? AWT, Swing, JavaFX & SWT 3
C tree action AWT, Swing, JavaFX & SWT 8
W Bei hinzufügen der Action verliert Button Text,Tooltip, etc AWT, Swing, JavaFX & SWT 5
B Problem mit Übergabe bei action in andere Klasse AWT, Swing, JavaFX & SWT 4
X Action und Frame AWT, Swing, JavaFX & SWT 3
K Jtree und Action Event AWT, Swing, JavaFX & SWT 6
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20

Ähnliche Java Themen

Neue Themen


Oben