homeduke Prof. Dr. Uwe Schmidt FH Wedel

Die Datei: ModelViewController1.java


weiter
   1/* das 1. Beispiel verbessert:
   2 * der Controller ist von dem Rest sauber entkoppelt
   3 * aber model und view sind noch vermischt
   4 */
   5
   6import java.applet.Applet;
   7import java.awt.Button;
   8import java.awt.Label;
   9import java.awt.Color;
  10import java.awt.GridLayout;
  11import java.awt.event.ActionEvent;
  12import java.awt.event.ActionListener;
  13
  14//--------------------
  15
  16public
  17class ModelViewController1
  18  extends Applet
  19{
  20  Button control1control2;
  21
  22  Counter1 model;
  23
  24  Label   view;
  25
  26  //--------------------
  27
  28  public
  29  void init() {
  30
  31    //--------------------
  32    // die MVC Bestandteile initialisieren
  33
  34    control1 = new Button("+1");
  35    control1.setBackground(Color.orange);
  36
  37    control2 = new Button("-1");
  38    control2.setBackground(Color.pink);
  39
  40    view = new Label();
  41    view.setAlignment(Label.CENTER);
  42    view.setBackground(Color.gray);
  43    view.setText("0");
  44
  45    model = new Counter1(view);
  46
  47    //--------------------
  48    // die grafischen Objekte anordnen
  49    setLayout(new GridLayout(3,1));
  50
  51    add(control1);
  52    add(control2);
  53    add(view);
  54
  55    //--------------------
  56    // die controller Ereignisse behandeln
  57
  58    control1.addActionListener
  59      (new ActionListener()
  60       {
  61         public
  62         void actionPerformed(ActionEvent e) {
  63           model.incr(+1);
  64         }
  65       }
  66      );
  67
  68    control2.addActionListener
  69      (new ActionListener()
  70       {
  71         public
  72         void actionPerformed(ActionEvent e) {
  73           model.incr(-1);
  74         }
  75       }
  76      );
  77  }
  78  
  79}
  80
  81//--------------------
  82
  83class Counter1 {
  84  int cnt;
  85
  86  Label l;
  87
  88  // die Sicht wird hier im Konstruktor gesetzt
  89  public
  90  Counter1(Label l) {
  91    this.cnt = 0;
  92    this.l   = l;
  93  }
  94
  95  public
  96  void incr(int i) {
  97    cnt += i;
  98
  99    // mitten im model eine Ausgabe !!!
 100    l.setText("" + cnt);
 101  }
 102}

Die Quelle: ModelViewController1.java


Letzte Änderung: 09.06.2008
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel