瀏覽代碼

trying to use MVC properly to set colours

tarfeef101 6 年之前
父節點
當前提交
3d4d0f9b66

+ 1 - 6
assignments/a2/src/main/java/Controls.java

@@ -16,18 +16,13 @@ public class Controls extends JPanel implements Observer
     this.setPreferredSize(new Dimension(300, 30));
     model.addObserver(this);
   }
-  
-  public void updateColour()
-  {
-    this.setBackground(Color.RED);
-    this.update(model);
-  }
 
   /**
   * Update with data from the model.
   */
   public void update(Object observable)
   {
+    this.setBackground(model.controlColour);
     revalidate();
     repaint();
   }

+ 3 - 3
assignments/a2/src/main/java/Main.java

@@ -20,9 +20,9 @@ public class Main
 		mainpanel.add(menubar, BorderLayout.PAGE_START);
 		mainpanel.add(sidepane, BorderLayout.LINE_START);
 		mainpanel.add(controls, BorderLayout.PAGE_END);
-		menubar.updateColour();
-		sidepane.updateColour();
-		controls.updateColour();
+		model.setMenuColour(green);
+		model.setSideColour(cyan);
+		model.setControlColour(red);
 		
 		// Setup the frame to do frame things
 		window.setPreferredSize(new Dimension(300,300));

+ 1 - 6
assignments/a2/src/main/java/Menubar.java

@@ -17,17 +17,12 @@ public class Menubar extends JPanel implements Observer
     model.addObserver(this);
   }
   
-  public void updateColour()
-  {
-    this.setBackground(Color.BLUE);
-    this.update(model);
-  }
-
   /**
   * Update with data from the model.
   */
   public void update(Object observable)
   {
+    this.setBackground(model.menuColour;
     revalidate();
     repaint();
   }

+ 24 - 0
assignments/a2/src/main/java/Model.java

@@ -5,6 +5,9 @@ public class Model extends Observable
 {
    /** The observers that are watching this model for changes. */
   private List<Observer> observers;
+  public Color menuColour;
+  public Color sideColour;
+  public Color controlColour;
 
   // Constructor
   public Model()
@@ -12,6 +15,27 @@ public class Model extends Observable
     this.observers = new ArrayList();
     setChanged();
   }
+  
+  public void setMenuColour(Color c)
+  {
+    menuColour = c;
+    setChanged();
+		notifyObservers();
+  }
+  
+  public void setSideColour(Color c)
+  {
+    sideColour = c;
+    setChanged();
+		notifyObservers();
+  }
+  
+  public void setControlColour(Color c)
+  {
+    controlColour = c;
+    setChanged();
+		notifyObservers();
+  }
 
   // Add observer to be notified on change
   public void addObserver(Observer observer)

+ 1 - 6
assignments/a2/src/main/java/Sidepane.java

@@ -16,18 +16,13 @@ public class Sidepane extends JPanel implements Observer
     this.setPreferredSize(new Dimension(100, 300));
     model.addObserver(this);
   }
-  
-  public void updateColour()
-  {
-    this.setBackground(Color.GREEN);
-    this.update(model);
-  }
 
   /**
   * Update with data from the model.
   */
   public void update(Object observable)
   {
+    this.setBackground(model.sideColour);
     revalidate();
     repaint();
   }