ActionListener

casi91

Bekanntes Mitglied
Hallo
ich hoffe, ich schreibe das jetzt in die richtige Gruppe.

Zuerst mal mein Vorhaben:
Ich bin zurzeit dabei mir Java anzueignen und will eine GUI (mit SWING) erstellen.
Das hat soweit auch wunderbar funktioniert, dafür gibt es ja auch genügend Beispiele.

Auf meiner Ansicht habe ich ein "PLZ"-Feld. Mein Ziel ist es nun, dass nachdem die PLZ eingegeben wurde, automatisch (nach "enter") der entsprechende Ort, Kreis, das Bundesland und das Land in einer Datenbank gefunden wird und die Werte in dafür bereits vorgesehene Felder gefüllt werden.

Da ich mir gedacht habe, dass ich diese Funktion noch in anderen Ansichten gebrauchen könnte, wollte ich eine Klasse dazu erstellen, die derzeit folgenden Aufbau hat:

Java:
public class PLZAutoSearch extends JFormattedTextField implements ActionListener {
	private Integer piPLZ;
	private String  psOrt;

	public Integer getPLZ() {
		return piPLZ;
	}
	public void setPLZ(Integer piPLZ) {
		this.piPLZ = piPLZ;
	}
	public String getOrt() {
		return psOrt;
	}
	public void setOrt(String psOrt) {
		this.psOrt = psOrt;
	}
	public PLZAutoSearch()
	{
		addActionListener(this);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		this.getData();
	}	
	public void getData()
	{
          .....
        }


In der Funktion "getData()" werden dann die Daten in der DB gesucht (funktioniert auch)

Nun zu meinem Problem:
Nachdem ich die Werte aus der DB ausgelesen habe, sollen diese natürlich auch in die Felder geschrieben werden, die ich dafür auf meiner Ansicht habe.
Ich dachte mir, der einfachste Weg wäre es, die Werte in Attributen (Im Beispiel: "psOrt") zu speichern und die Attribute in meiner Ansicht abzufragen.

Mein Problem ist nun schlicht und ergreifend, dass ich keine Ahnung habe, wie bzw. zu welchem Zeitpunkt ich die Attribute abfragen kann.

Meine erste Idee war es, einen zweiten ActionListener in meiner Ansicht zu definieren:
Java:
		oEd_PLZ = new PLZAutoSearch();
		oEd_PLZ.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                              .....
			}
		});

Nur leider wird ja anscheinend der zuletzt angelegte ActionListener als erstes ausgeführt, wodurch in an dieser Stelle die Attribute nicht abfragen könnte.

Wie erwähnt arbeite ich mich in Java ein.
Zuvor habe ich 3 Jahre in "Visual DataFlex" (falls das jemandem ein Begriff ist) und ein wenig in Delphi programmiert.

Ich hoffe ich konnte mein Problem gut Darstellen und bin über jede Hilfe und Anregung froh :)
 
S

SlaterB

Gast
allgemein wäre zu überlegen, nur um die Sauberkeit einmal erwähnt zu haben, nicht von JFormattedTextField zu erben,
ein Attribut innerhalb der Klasse ginge letztlich auch

mein Vorschlag zu deinem Problem:
füge keine weiteren Listener an das JFormattedTextField an, sondern einen Listener, ob ActionListener oder eine anderes Interface,
an deine eigene Klasse, an PLZAutoSearch,
am Ende der getData()-Methode ist dann genau der richtige Zeitpunkt, dass deine Klasse weitere interessierte informiert

speichere die Listener in einer Liste oder vielleicht reicht ja einer, dann ganz normal listener.methode() aufrufen
 

casi91

Bekanntes Mitglied
Ich habe die Klasse erst mal von JFormattedTextField abgeleitet, weil es nun eben ein Textfeld ist in das ich auch die PLZ eintrage.
Ich muss gestehen, dass ich mit dem ganzen Listener Konzept noch nicht vertraut bin (wie gesagt, ich arbeite mich ein ;) )

Ich kenne es bisher eben so, dass beispielsweise ein Button-Objekt (bzw. die Klasse dieses Objektes) eine Methode "onClick" kennt und darüber die Aktion gestartet wird.

Ich les mir mal ein wenig was über Listener an und versuche deinen Vorschlag umzusetzen.
Auf jedenfall aber schonmal Danke :)
 
S

SlaterB

Gast
Oberserver heißt das Pattern allgemein, aber das ist wirklich hochtrabend,
im Grunde muss nur B an A übergeben werden, A merkt sich B und ruft zum geeigneten Zeitpunkt eine Methode auf,
das ist absolut nichts kompliziertes, das macht man fast überall so ohne groß nachzudenken

das zur Vererbung habe ich nur allgemein erwähnt, kürzlich gab es dazu ein langes Thema
http://www.java-forum.org/java-basics-anfaenger-themen/126068-lieber-jframe-erben.html
ich bin übrigens durchaus auf der Seite dass Vererbung bei Swing-Komponenten ganz ok ist,
aber falls du jetzt einen ActionListener direkt in PLZAutoSearch speicherst, parallel zu den ActionListenern des JFormattedTextField,
dann wäre das schon etwas ungünstige Verdopplung, die ohne Vererbung sauberer aussähe
 

casi91

Bekanntes Mitglied
Muss leider gestehen, dass ich gerade ziemlich auf nem Schlauch stehe und Füße heben garnichts bringt ;(

Habe es (nur damit es mal funktioniert) folgendermaßen programmiert:

Start.java (meine Ansicht)
Java:
.....		
                oEd_PLZ = new JFormattedTextField();
		oEd_PLZ.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				PLZAutoSearch oPLZ = new PLZAutoSearch();
				Integer iPLZ = Integer.parseInt(oEd_PLZ.getText());
				oPLZ.getData(iPLZ);
				
				oLbl_OrtWert.setText(oPLZ.getOrt());
			}
		});
.....


PLZAutoSearch.java
Java:
public class PLZAutoSearch {
	private Integer piPLZ;
	private String  psOrt;
	
	public Integer getPLZ() {
		return piPLZ;
	}

	public void setPLZ(Integer piPLZ) {
		this.piPLZ = piPLZ;
	}

	public String getOrt() {
		return psOrt;
	}

	public void setOrt(String psOrt) {
		this.psOrt = psOrt;
	}
	public void getData(Integer iPLZ)
	{
         ....
        }

Das funktioniert wie gesagt auch, jedoch habe ich das gefühlt, dass es so nicht sonderlich sauber bzw. schlau ist.
(Oder sehe ich das falsch?)
 
S

SlaterB

Gast
Ansichtssache, finde ich gar nicht so schlecht,

ansonsten kann es wie gesagt so bleiben dass
- PLZAutoSearch ActionListener ist und sich an JFormattedTextField registiert
- JFormattedTextField unabhängig von dieser Frage in PLZAutoSearch enthalten ist, ob nun durch Vererbung oder als Attribut

und wie gesagt ein zweiter Listener, wie am Anfang geplant, nur eben nicht auch an JFormattedTextField, sondern an PLZAutoSearch,
aber das muss alles nicht zwingend schöner sein
 

casi91

Bekanntes Mitglied
Alles klar :)
ich schließe an dieser Stelle diesen Thread und befasse mich mal noch ein wenig mit den Listener.
Aber gut zu wissen, dass meine Variante schonmal nicht unbedingt falsch ist :D

Aber vielleicht finde ich ja mit den Listener dann eine Variante, die mir persönlich besser gefällt :)
(oder ich finde raus, dass meine Variante für dieses Problem in diesem Moment doch die schönste ist)
Ist halt alles doch ziemlich anders aufgebaut, wie bei Visual Dataflex ^.^

Vielen Dank nochmal und ich bin mir sicher, du wirst hier im Forum noch öfters von mir hören ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
S Swing JButton mit ActionListener innerhalb einer JTable AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
S ActionListener "nach oben weitergeben" AWT, Swing, JavaFX & SWT 10
M Anonymer ActionListener AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
B Swing Formular mit mehreren Elementen - wie die ActionListener-Verarbeitung lösen? AWT, Swing, JavaFX & SWT 2
M getSource() findet Button nicht - ActionListener AWT, Swing, JavaFX & SWT 4
S Swing mit ActionListener auf Objekte einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 3
G Swing Button ActionListener macht komische Sachen AWT, Swing, JavaFX & SWT 19

Ähnliche Java Themen

Neue Themen


Oben