Action-/Change Listener funktionieren nicht.

Status
Nicht offen für weitere Antworten.

megachucky

Bekanntes Mitglied
ich versuche mich gerade an der obserber patter.

habe ein textfield und einen slider in je einer extra klasse. und als dritte klasse ein jframe, wo sie reinkommen.

leider funktionieren nun die listener / events nicht mehr.

kann mir jemand sagen was ich da machen muss?


Code:
package aufgabenblatt5.aufgabe10;

import java.awt.FlowLayout;

import javax.swing.JFrame;

import java.util.ArrayList;


/**
 * Konkretes Subject, implementiert das Interface 'Subject', gehört zur Observer
 * Pattern.
 * 
 * @author Kai
 *
 */
public class FrameConcreteSubject extends JFrame implements Subject
{
	private ArrayList<Observer> observerList;
	private int subjectState = 1;
	
	public FrameConcreteSubject()
	{
		super("FrameSubject");
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setSize(600, 400);
		
		observerList = new ArrayList<Observer>();
		
		getContentPane().setLayout(new FlowLayout());
		
		
		
		
		//pack();
		setVisible(true);
	}
	
	/**
	 * Fügt einen neuen Observer hinzu,
	 * @param observer Observer
	 */
	public void attach(Observer observer)
	{
		observerList.add(observer);
	}
	
	/**
	 * Entfernt einen Observer.
	 * @param observer Observer
	 */
	public void detach(Observer observer)
	{
		observerList.remove(observer);
	}
	
	/**
	 * Updated alle Observer.
	 *
	 */
	public void notifyAllObserver()
	{
		for (int i=0; i<observerList.size(); i++)
		{
			observerList.get(i).update();
		}
	}

	/**
	 * @return Returns the subjectState.
	 */
	public int getSubjectState() 
	{
		return subjectState;
	}

	/**
	 * @param subjectState The subjectState to set.
	 */
	public void setSubjectState(int subjectState) 
	{
		this.subjectState = subjectState;
	}
	
	
	
}











package aufgabenblatt5.aufgabe10;

import javax.swing.JSlider;

import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * Konkreter Observer, implementiert das Interface 'Observer', gehört zur Observer
 * Pattern.
 * 
 * @author Kai
 *
 */
public class JSliderConcreteObserver implements Observer, ChangeListener
{
	private JSlider slider;
	private FrameConcreteSubject subject;
	
	private int observerState = 1;
	
	public JSliderConcreteObserver(FrameConcreteSubject subject)
	{
		slider = new JSlider();
		slider.setMajorTickSpacing(25);
		slider.setMinorTickSpacing(1);
		slider.setPaintTicks(true);
		slider.setPaintLabels(true);
		
		subject.getContentPane().add(slider);
	}
	
	/**
	 * Updated die Observer-Daten.
	 *
	 */
	public void update()
	{
		int tempInt = subject.getSubjectState();
		observerState = tempInt;
		slider.setValue(tempInt);
	}
	
	public void stateChanged(ChangeEvent e)
	{
		JSlider tempSlider = (JSlider) e.getSource();
		int tempInt = tempSlider.getValue();
		subject.setSubjectState(tempInt);
	}
}





package aufgabenblatt5.aufgabe10;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JSlider;
import javax.swing.JTextField;

/**
 * Konkreter Observer, implementiert das Interface 'Observer', gehört zur Observer
 * Pattern.
 * 
 * @author Kai
 *
 */
public class JTextFieldConcreteObserver implements Observer, ActionListener
{
	private JTextField textField;
	private FrameConcreteSubject subject;
	
	public JTextFieldConcreteObserver(FrameConcreteSubject subject)
	{
		textField = new JTextField(3);
		
		subject.getContentPane().add(textField);
	}
	
	/**
	 * Updated die Observer-Daten.
	 *
	 */
	public void update()
	{
		int tempInt = subject.getSubjectState();
		textField.setText(String.valueOf(tempInt));
	}
	
	public void actionPerformed(ActionEvent e)
	{
		System.out.println("test");
			String tempString = textField.getText();
			int tempInt = Integer.parseInt(tempString);
			
			subject.setSubjectState(tempInt);
	}
	
}




package aufgabenblatt5.aufgabe10;


/**
 * Startet das Programm.
 * @author CHUCKY
 *
 */
public class ObserverTestClass 
{
	public static void main(String[] args)
	{
		FrameConcreteSubject fcs = new FrameConcreteSubject();
		new JSliderConcreteObserver(fcs);
		new JTextFieldConcreteObserver(fcs);
	}
}
 

ronny

Bekanntes Mitglied
Hi!

hhhmm, ganz ehrlich.. ich kann mir nicht vorstellen, dass das JEMALS funktioniert haben soll......

Du musst den Aufbau von deinem Programm komplett ändern....
Dieser ganze attach und dettach und notify irgendwas kram hat in
einer gui view ala jframe NIX zu suchen! :wink:

Was du hier probierst, ist einer view (jframe), die normalerweise, wenn
überhaupt, selbst nur ein observer sein kann, ein "model image" aufs Auge zu
drücken.. .sprich daraus ein observable zu machen. Das geht definitiv nicht!

Du musst ausserdem in deiner view WENN dann mit addObserver(this) dem Model
quasi die view als Observer registrieren. Das fehlt z. B. schon mal überall bei dir..

Was dir noch komplett fehlt ist eine Klasse, die als Model selbst fungiert (dein aktueller Jframe...).
Also eine Klasse z. B.: IrgendwasModel extends Observable.

Diese Klasse musst du dann den Views mitgeben und die registrieren sich dann
als Observer an dem Model. Dafür gibts Methoden -> ist alles schon fertig!

Im Model machst du dann Methoden ala "zeigeMirAlleKunden(...)" die du von deiner
Gui aus aufrufen kannst... -> Die View kennt das Model -> aber auf KEINEN Fall umgedreht!

In dem Model machst du dann irgendwas und rufst dann setChanged(); und danach
notifyObservers(Observable o, Object x); auf.... als x können das irgendwelche Daten
sein, die dann in der update(..) Methode in der view weiter verwendet werden können, bzw.
angezeigt werden....

hmmmm, ansonsten nochmal im Forum zu dem Thema suchen, da gibts sicher noch mehr
dazu. :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
D Java Action abkürzen Java Basics - Anfänger-Themen 9
M Action Event auf Textfield legen Java Basics - Anfänger-Themen 18
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
G Erste Schritte Action soll zwei sachen ausführen Java Basics - Anfänger-Themen 7
G über JButton Action einen anderen Button verändern Java Basics - Anfänger-Themen 7
D Button action Event einblenden/ausblenden Java Basics - Anfänger-Themen 6
D Methoden aus Action Listenern aufrufen Java Basics - Anfänger-Themen 7
G textarea action Java Basics - Anfänger-Themen 5
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
W OOP Action Listening und MVC-Modell Java Basics - Anfänger-Themen 3
Devil0s while loop, Button action Java Basics - Anfänger-Themen 8
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
P ActionListener Action Event Java Basics - Anfänger-Themen 5
A action listener Java Basics - Anfänger-Themen 8
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
J Action Listener Java Basics - Anfänger-Themen 2
M Frage zur Methode Action.putValue(String,Object) Java Basics - Anfänger-Themen 5
S Action Listener Java Basics - Anfänger-Themen 6
M Action als neue Klasse Java Basics - Anfänger-Themen 2
Developer_X Action über rotes X in der Eke eines JFrames entscheiden. Java Basics - Anfänger-Themen 15
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
G Button Action Event starten Java Basics - Anfänger-Themen 4
G Nicht benannte Buttons - Wenn gedrückt > Action Java Basics - Anfänger-Themen 24
G Frage zur Action? Java Basics - Anfänger-Themen 4
G nach action Script aufrufen Java Basics - Anfänger-Themen 3
D problem mit einem action Java Basics - Anfänger-Themen 6
E Action und Accelerator Java Basics - Anfänger-Themen 2
S Problem mit Action Listener Java Basics - Anfänger-Themen 7
M Fehler im Action Listener Java Basics - Anfänger-Themen 9
G Auswahl in DropDown feldern in JSP seiten als Action Aufruf Java Basics - Anfänger-Themen 2
C Frage bzgl. action von Button Java Basics - Anfänger-Themen 6
B Oberflaecheprog einfaches beispiel (button action listener) Java Basics - Anfänger-Themen 5
D String value change listener Java Basics - Anfänger-Themen 2
T JSP, Button-Color change. Java Basics - Anfänger-Themen 1
N Change date Format Java Basics - Anfänger-Themen 2
M RadioButton change (active) icon? Java Basics - Anfänger-Themen 8
G JFileChooser - Change Icon Problem! Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
llabusch Kombinationsfeld - LISTENER Java Basics - Anfänger-Themen 0
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
G Listener ohne Objekt Java Basics - Anfänger-Themen 5
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
U Listener erstellen Java Basics - Anfänger-Themen 16
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6
G Probleme mit Listener Java Basics - Anfänger-Themen 27
B Wert einer Variable mit Listener ueberwachen Java Basics - Anfänger-Themen 3
F Port Listener Java Basics - Anfänger-Themen 9
J JComboBox Listener Java Basics - Anfänger-Themen 6
J Window-Listener funktionieren nicht Java Basics - Anfänger-Themen 7
N Frage zu Listener für Textfelder Java Basics - Anfänger-Themen 5
Benji0815 Eigenen Listener schreiben Java Basics - Anfänger-Themen 13
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
S Key-Listener richtig "einbauen" Java Basics - Anfänger-Themen 42
S Listener von ausserhalb aufrufen Java Basics - Anfänger-Themen 2
Sweety Listener in Swing Java Basics - Anfänger-Themen 8
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben