Hi!
Ich bin jetzt grad dabei ein Observer Pattern zu implementieren und heute hab ich zum ersten Mal das Gefühl, dass Programmieren Spaß macht... :idea:
ist das nicht schön?
ich glaub ich habs auch fast, nur fehlt jetzt noch der letzte "Zentimeter" zum Erfolg! :bae:
Kann mir da bitte noch jemand unter die Arme greifen?
Ich möcht eine Zahl dekrem, und inkrem. und die aktuelle Zahl soll immer im TextField ausgegeben werden!
Model ist Observable und View Observer!
Im Model hab ich eine Liste mit lauter Observern gespeichert!
Nur hab ich da jetzt ein Problem in der Methode notifyObserver(..){ ..}
da kenn ich mich jetzt grad nicht aus?
also eigentlich sind nur die Methoden notifyObserver und update interessant!
Da dürfte der Fehler liegen!
was gehört da hinein?
Ich bin jetzt grad dabei ein Observer Pattern zu implementieren und heute hab ich zum ersten Mal das Gefühl, dass Programmieren Spaß macht... :idea:
ist das nicht schön?
ich glaub ich habs auch fast, nur fehlt jetzt noch der letzte "Zentimeter" zum Erfolg! :bae:
Kann mir da bitte noch jemand unter die Arme greifen?
Ich möcht eine Zahl dekrem, und inkrem. und die aktuelle Zahl soll immer im TextField ausgegeben werden!
Model ist Observable und View Observer!
Im Model hab ich eine Liste mit lauter Observern gespeichert!
Nur hab ich da jetzt ein Problem in der Methode notifyObserver(..){ ..}
da kenn ich mich jetzt grad nicht aus?
also eigentlich sind nur die Methoden notifyObserver und update interessant!
Da dürfte der Fehler liegen!
was gehört da hinein?
Code:
public class Berechnung extends Observable {
int zahl;
ArrayList<Observer> list=new ArrayList<Observer>();
BerechnungView view;
public Berechnung(int zahl){
this.zahl=zahl;
}
public void inkrement(){
zahl++;
setChanged();
notifyObserver(zahl);
}
public void dekrement(){
zahl--;
setChanged();
notifyObserver(zahl);
}
public void addObserver(Observer o){
list.add(o);
}
public void removeObserver(Observer o){
list.remove(o);
}
public void notifyObserver(int zahl){
for(Observer i :list){
i.update(this, zahl);
}
}
}
Code:
public class BerechnungView extends JFrame implements Observer, ActionListener{
JButton inkre;
JButton dekre;
JTextField eingabe;
JTextField ausgabe;
Berechnung berechnung;
public BerechnungView(String titel){
super(titel);
berechnung=new Berechnung(0);
berechnung.addObserver(this);
Container c=getContentPane();
Panel p=new Panel();
p.setBackground(Color.white);
c.setFocusable(true);
c.add(p);
eingabe=new JTextField(10);
p.add(eingabe);
inkre=new JButton("+");
p.add(inkre);
inkre.addActionListener(this);
dekre=new JButton("-");
p.add(dekre);
ausgabe=new JTextField(10);
p.add(ausgabe);
dekre.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String cmd="";
if(cmd.equals("+")){
berechnung.inkrement();
}
else if(cmd.equals("-")){
berechnung.dekrement();
}
}
public void update(Observable arg, Object obj){
String s=String.valueOf(obj);
ausgabe.setText(s);
}
public static void main(String [] args){
BerechnungView view=new BerechnungView("Berechnung");
view.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
view.setLocation(150,150);
view.setSize(160,130);
view.setVisible(true);
}
}