Ich bin dabei, das Observer-Pattern zu verstehen.
Dabei habe ich mir 3 Klassen angelegt:
View: Beinhaltet einen JSlider und ein Textfeld, wo dessen momentaner Wert angezeigt werden soll.
Model: Soll auf Veränderungen des JSliders reagieren und den momentanen Wert speichern (Beobachter).
Main: Instanziiert die beiden Klassen.
Leider reagiert mein Beobachter nicht auf Veränderungen. Kann mir bitte jemand helfen?
Main:
View:
Model:
Dabei habe ich mir 3 Klassen angelegt:
View: Beinhaltet einen JSlider und ein Textfeld, wo dessen momentaner Wert angezeigt werden soll.
Model: Soll auf Veränderungen des JSliders reagieren und den momentanen Wert speichern (Beobachter).
Main: Instanziiert die beiden Klassen.
Leider reagiert mein Beobachter nicht auf Veränderungen. Kann mir bitte jemand helfen?
Main:
Java:
package javaapplication1;
import javax.swing.*;
public class Main extends JFrame {
private Model m1 = new Model();
private View v1 = new View(m1);
public Main() {
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(500, 400);
m1.addObserver(v1);
this.add(v1);
}
public static void main(String[] args) {
Main m = new Main();
}
}
View:
Java:
package javaapplication1;
import javax.swing.*;
import java.util.*;
public class View extends JPanel implements Observer {
private JSlider slider = new JSlider(0, 5, 1);
private JTextField tf1 = new JTextField(10);
private Model m1;
public View(Model m1) {
this.m1 = m1;
m1.addObserver(this);
slider.setPaintTicks(true);
slider.setMinorTickSpacing(1);
this.add(slider);
this.add(tf1);
}
public void update(Observable obs, Object obj) {
tf1.setText(m1.getWert() + "");
}
}
Model:
Java:
package javaapplication1;
import java.util.*;
public class Model extends Observable {
private int wert;
public int getWert() {
return wert;
}
public void setWert(int wert) {
this.wert = wert;
setChanged();
notifyObservers("wert");
}
}