ActionListener eGUI...getSource()....

Status
Nicht offen für weitere Antworten.

leaves

Mitglied
Hallo,

ich habe einen Chat-Client gebaut, welcher auch bis dato funktionierte.
Da wir jetzt ein MVC Modell intregieren sollen, habe ich das Problem, dass der Client einen Fehler ausschmeißt. Es gibt 2 GUI-Objekte, ein Controller Client etc.
Interessant ist nur, die GUI löst ein Event aus, welches der Client abfängt. Mit der get-Methode holt er sich das Ergebnis und setzt es wieder zum Client - zum Testen!

Java:
//Controller
class MultiplyListener implements ActionListener {
		public void actionPerformed(ActionEvent eGUI...) {
		Object o = eGUI....getSource();
		for(GUIClient... gui: _guiList)
		gui.anzeigen(o);
		}
	}




// der Client:

public void anzeigen(Object o) {
  	    GUIClient.... gui....= (GUIClient..) o;
  		jTextArea2.setText(gui...._tausgabe);
       //System.out.println("...... " + text);
  	}
  	
}

Der Fehler: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButto...

Kann man den Source nicht verwenden??? Vielen Dank
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> GUIClient.... gui....= (GUIClient..) o;
macht keinen Sinn, das übergebene Objekt ist ein JButton, wie die Fehlermeldung auch besagt,

der Aufruf
> gui.anzeigen(o);
legt nahe, dass die Methode anzeigen() selber in GUIClient liegt,
wenn du dort also das GUIClient-Objekt haben willst, dann wäre das schlicht

GUIClient gui = this;


oder möchtest du genau den GUIClient bestimmen, welcher den JButton enthält?
dann musst du diese Information irgendwo im/ zum Button ablegen (Subklasse oder Map)
oder am JButton so oft getParent() aufrufen, bist du hoffentlich bis zum JFrame kommst,
welches vielleicht das gesuchte Objekt ist
 
Zuletzt bearbeitet von einem Moderator:

leaves

Mitglied
Danke erstmal für die schnelle Antwort. Das Forum ist wirklich schnell.

Habe mir schon gedacht das es nicht funktioniert...
Die Sache ist, ich habe drei Clients, welche die Nachricht mittels Button versenden. Der Controller bekommt das Event und soll allen in der ArrayList bescheid geben, dass eine neue News da ist.
Eine Referenz von dem Objekt brauche ich, aber wie bekomme ich die aus dem Event geholt?

Wo soll der Code hin:
GUIClient gui = this;
 
S

SlaterB

Gast
da wo vorher
> GUIClient.... gui....= (GUIClient..) o;
stand

was dein Programm aber machen soll ist mir nicht klar und
GUIClient gui = this;
generell eher sinnloser Code

Erlärungen der Form 'Eine Referenz von dem Objekt brauche ich' bringen nichts
(welches Objekt, wo wird die Referenz wann wofür gebraucht, was funktioniert nicht?

edit:
ich hatte ja schon eine Theorie aufgestellt, die mit einfachen Worten unmissverständlich zu beschreiben ist:
der Button liegt in einer der n ClientGUIs und nun wird anzeigen() in allen GUIs aufgerufen,
dabei muss genau das ClientGUI-Objekt bekannt sein, welches den Button enthält, damit man auf dessen TextFeld zugreifen kann

ist dem so oder geht es um was anderes?
 
Zuletzt bearbeitet von einem Moderator:

leaves

Mitglied
da wo vorher
der Button liegt in einer der n ClientGUIs und nun wird anzeigen() in allen GUIs aufgerufen,
dabei muss genau das ClientGUI-Objekt bekannt sein, welches den Button enthält, damit man auf dessen TextFeld zugreifen kann

ist dem so oder geht es um was anderes?

Genau darum gehts es, deswegen habe ich ja nicht weiter kommentiert ;)

Java:
	class MultiplyListener implements ActionListener {
		public void actionPerformed(ActionEvent eGUI) {
		Object o = eGUI.getSource();
		for(GUIClient2 gui: _guiList)
		gui.anzeigen(o);
		}
	}

Die Frage ist, wie gebe ich der Methode das Objekt mit - gui.anzeigen(o) -
welches den Event ausgelöst hat.
Du liegst aber schon richtig mir deiner Vermutung.
Ist ja das ,,gleiche" wie beim Observer-Patter mit Model und Subject.
 
S

SlaterB

Gast
ich habe ja schon einige Möglichkeiten aufgelistet,
entweder du hast eine Subklasse von JButton, welches die Referenz auf das zugehörige GUI-Objekt enthält,
oder der Listener enthält die Referenz, das ist ja schon eine eigene Klasse,

an der Stelle, an der du
meinButton.addListener(new MultiplyListener()));
aufrufst, kannst du auch
meinButton.addListener(new MultiplyListener(this))); schreiben,
unter Annahme, dass this an dieser Stelle das fragliche GUI-Objekt ist

oder irgendwo gibt es eine Map Button -> GUI

oder getParant() aufrufen, irgendwann kommt man zum JFrame
 

leaves

Mitglied
ich habe ja schon einige Möglichkeiten aufgelistet,
entweder du hast eine Subklasse von JButton, welches die Referenz auf das zugehörige GUI-Objekt enthält,
oder der Listener enthält die Referenz, das ist ja schon eine eigene Klasse,

oder getParant() aufrufen, irgendwann kommt man zum JFrame

Wie gesagt, dass Event muss die Referenz des aufrufenden GUI-Objektes mitgeben. Ansonsten weiß der Controller nicht, in welchem Objekt die neue Nachricht geschrieben wurde.

Mit der Referenz wird dann durch die ArrayListe iteriert und das Objekt an die Methode anzeigen(o) übergeben...
 
S

SlaterB

Gast
besteht noch eine Frage? klingt eher nach Korrektur der Lösung
 

leaves

Mitglied
Nur ein :oops:

"meinButton.addListener(new MultiplyListener()));
aufrufst, kannst du auch
meinButton.addListener(new MultiplyListener(this))); "

Es sind ja zwei Objekte, meinButton liegt aber im GUI Object mit

Java:
public void addJBActionPerformed(ActionListener list){
  		jBut.addActionListener(list);
  	
  	}

und nicht in Controller Objekt, wo

Java:
gui.addJButton1ActionPerformed(new MultiplyListener());

verwendet wird
 
S

SlaterB

Gast
> gui.addJButton1ActionPerformed(new MultiplyListener());
ließe sich auch zu
gui.addJButton1ActionPerformed(new MultiplyListener(gui));
umwandeln
 
Status
Nicht offen für weitere Antworten.
Ä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
C ActionListener AWT, Swing, JavaFX & SWT 6
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

Ähnliche Java Themen


Oben