From 74408eaeec4f5273491eaa6f877599b6b5fb9b09 Mon Sep 17 00:00:00 2001
From: Leon Dieter <Leon Dieter@DESKTOP-L4JC8N4>
Date: Tue, 20 Apr 2021 09:57:49 +0200
Subject: [PATCH] comments and minor changes

---
 UML.dia                                       | Bin 20630 -> 19992 bytes
 .../ardublock/simulator/Simulator.java        |  11 ++-
 .../ardublock/simulator/view/GUI.java         |  69 +++++++++++-------
 .../simulator/view/modules/ArduinoUno.java    |  64 ++++++++--------
 .../simulator/view/modules/Button.java        |  54 ++++----------
 .../simulator/view/modules/Modul.java         |   4 +-
 .../simulator/view/modules/Poti.java          |  14 ++--
 .../ardublock/simulator/view/modules/RGB.java |  40 ++++------
 8 files changed, 122 insertions(+), 134 deletions(-)

diff --git a/UML.dia b/UML.dia
index ff72c97fbfdcdafea574de3752e99e25ce12d437..6f33a4c400cee424817c34093c0c7f55ad92a964 100644
GIT binary patch
literal 19992
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

literal 20630
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
Q&Fa>{ZeimIZw1i50D$9nQ~&?~

diff --git a/src/tec/letsgoing/ardublock/simulator/Simulator.java b/src/tec/letsgoing/ardublock/simulator/Simulator.java
index 8175395..9a75e78 100644
--- a/src/tec/letsgoing/ardublock/simulator/Simulator.java
+++ b/src/tec/letsgoing/ardublock/simulator/Simulator.java
@@ -179,16 +179,19 @@ public class Simulator implements Runnable, ActionListener{
 		Point locationWindow = gui.getLocation();
 		
 		
-		int WidthWindow  = ((int)((gui.getWidth() * 1.0975) - 13.307));
-		int HeightWindow = ((int)((gui.getHeight() * 1.2709) - 174.77));
+//		int widthWindow  = ((int)((gui.getWidth() * 1.0975) - 13.307));
+//		int heightWindow = ((int)((gui.getHeight() * 1.2709) - 174.77));
 		
+		//Die bisherige Größe des Fenster wird abgespeichert
+		int widthWindow = gui.getWidth();
+		int heightWindow = gui.getHeight();
 
 		gui.stopThread();
 		gui.dispose();
 
 		
-		//Die neue GUI wird mit den gespeicherten Werten gestartet
-		createSubClasses(WidthWindow, HeightWindow);		
+		//Die neue Objekte werden mit den gespeicherten Werten erzeugt
+		createSubClasses(widthWindow, heightWindow);		
 		//die GUI wird an die gespeicherte Position verschoben
 		gui.setLocation(locationWindow);
 
diff --git a/src/tec/letsgoing/ardublock/simulator/view/GUI.java b/src/tec/letsgoing/ardublock/simulator/view/GUI.java
index af159ed..d721bda 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/GUI.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/GUI.java
@@ -67,7 +67,9 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 	private int yscale;
 	private JPanel modulPanel;
 	private Container mainPane;
-	private int WindowHeight, WindowWidth;
+	private int windowHeight, windowWidth;
+	private final int scalingOffset = 100; //wird für die Skalierung des Arduinos benötigt
+	private final int updateGap = 10; //Legt fest wie groß eine Fenstergrößenänderung sein muss um eine Fensteraktualisierungen durchzuführen
 	
 
 	/**
@@ -78,11 +80,20 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 	public GUI(Simulator simu, int _xscale, int _yscale) {
 		super("ArduBlock Simulator");
 	
-		// TODO: Größenverhätlnisse mit +80 eventuell
-		xscale = _xscale;
-		yscale = _yscale;
-		WindowWidth = _xscale;
-		WindowHeight = _yscale;
+		
+		//Das Fenster wird gemäß des kleineren Seitenverhältnisses erstellt
+		if(_xscale <= _yscale - scalingOffset) {					
+			xscale = _xscale;
+			yscale = _xscale;					
+		}								
+		else {						
+			xscale = _yscale - scalingOffset;
+			yscale = _yscale - scalingOffset;						
+		}	
+		
+
+		windowWidth = _xscale;
+		windowHeight = _yscale;
 		
 		// Konstruktor der Module
 				modules[0] = new RGB(new ImageIcon(getToolkit()
@@ -134,10 +145,16 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 				//Panel der Buttons auf der rechten Seite wird ausgeblendet
 				//mainPane.add(createControlPanel(simu), BorderLayout.EAST);
 				mainPane.add(createSerialLog(), BorderLayout.PAGE_END);
-				//this.setSize(xscale, yscale);
-				super.pack();
+				
+				//Die Fenstergröße wird mit der dem Konstruktor übergebenen Größe festgelegt
+				super.setSize(_xscale, _yscale);
+				//Eine Minimum Fenstergröße wird festgelegt
+				super.setMinimumSize(new Dimension(200, 200));
 				// this.setLocation(-1300, 0); //Möglichkeit die Renderingposition festzulegen
 				super.setVisible(true);
+				//Eine Aktualisierung der GUI gemäß den übergebenen Seitenverhältnissen wird aufgerufen.
+				updateGUI(xscale, yscale);
+			
 				
 				//ComponentListener wird hinzugefügt, der auf das Vergrößern des Fenster reagiert und die GUI neu lädt
 		this.addComponentListener(new ComponentListener() {
@@ -147,23 +164,23 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 				
 				
 
-					//Das Fenster soll erst dann upgedatet werden wenn eine Größenänderung größer 30 stattgefunden hat
+					//Das Fenster soll erst dann upgedatet werden wenn eine Größenänderung größer 5 stattgefunden hat
 					//um zu verhindern dass die update Funktion durch ein zu häufiges Aufrufen das Programm aufhängt.
-					if((Math.abs(WindowHeight - getHeight()) > 5) || (Math.abs(WindowWidth - getWidth()) > 5)) {
-											
-							WindowHeight = getHeight();
-							WindowWidth = getWidth();
-						//	topPanelWidth = topPanel.getWidth();
-						//	topPanelHeight = topPanel.getHeight();
+					if((Math.abs(windowHeight - getHeight()) > updateGap) || (Math.abs(windowWidth - getWidth()) > updateGap)) {
+							
+							//Die aktuelle Fenstergröße wird abgespeichert
+							windowHeight = getHeight();
+							windowWidth = getWidth();
+
 							
 							//GUI wird nur gleichmäßig skaliert mit den Größen des kleineren Seitenverhätlnisses
-							if(WindowWidth <= (WindowHeight - 80)) {					
-								xscale = WindowWidth;
-								yscale = WindowWidth;					
+							if(windowWidth <= windowHeight - scalingOffset) {					
+								xscale = windowWidth;
+								yscale = windowWidth;					
 							}								
 							else {						
-								xscale = WindowHeight - 80;
-								yscale = WindowHeight - 80;						
+								xscale = windowHeight - scalingOffset;
+								yscale = windowHeight - scalingOffset;						
 							}		
 							
 								//GUI wird upgedatet
@@ -207,7 +224,7 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 	public void updateGUI(int _xscale, int _yscale) {
 		
 	
-		
+		//Jedes Modul wird mit den neuen Seitenverhätlnissen aktualisiert
 		for(int i = 0; i < 4; i++) {
 			
 			modules[i].updateGUI(_xscale, _yscale);
@@ -215,10 +232,10 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 		}
 		
 	
-		
+		//Wird benötigt um kleine Anzeigefehler zu beseitigen
 		super.setVisible(true);
-		
-		updateSerialLog(getHeight()-topPanel.getHeight());	
+		//Die Höhe des SerialLog wird gemäß den Seitenverhältnissen angepasst
+		updateSerialLogHeight(getHeight()-topPanel.getHeight());	
 		
 		
 		
@@ -326,8 +343,8 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 	 * @param size
 	 * Aktuelle Größe Fenster in y
 	 */
-	public void updateSerialLog(int size) {
-		
+	public void updateSerialLogHeight(int size) {
+		//Die Reihenanzahl des SerialLog wird anhand der Größe des oberen Panels berechnet
 		int numRows =  Math.min(Math.max(((int)size/20)-3, 3), 20);
 		serialLog.setRows(numRows);			
 		this.setVisible(true);
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
index 6ed8933..ecd5835 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
@@ -33,18 +33,22 @@ public class ArduinoUno extends Modul {
 	private JLabel labelPower, chiplabel, label13, labelButton;
 	private ImageIcon chipIcon, chipIcon_temp;
 	private JButton button;
-	private int xscale;
-	private int yscale;
+
 	
 	public ArduinoUno(ImageIcon _icon, Simulator simu, int _xscale, int _yscale) {
+		//Die übergebenen Skalierungswerte werden in das Objekt geschrieben
 		this.xscale = _xscale; 
 		this.yscale = _yscale;
+		//Das Label für den Arduino wird erzeugt
 		chiplabel = new JLabel();
-		
+		//Das Bild des Arduinos wird in chipIcon geladen
 		chipIcon = _icon;
+		//Die temporäre Variable chipIcon_temp speichert das den Seitenverhältnissen entsprechend neu skalierte Bild
 		chipIcon_temp = new ImageIcon(chipIcon.getImage().getScaledInstance(((int)(0.606*xscale)), ((int)(0.432*yscale)), Image.SCALE_SMOOTH));
+		//das neue skalierte Bild wird in das chipLabel geschrieben
 		chiplabel.setIcon(chipIcon_temp);
 		
+		//Der Reset-Button wird erzeugt und initialisiert
 		button = new JButton();
 		button.setActionCommand("reset");
 		button.addActionListener(simu);
@@ -52,6 +56,7 @@ public class ArduinoUno extends Modul {
 		button.setContentAreaFilled(false);
 		button.setBorderPainted(false);
 		
+		//Ein Label für den Reset-Button wird erzeugt
 		labelButton = new JLabel();
 		labelButton.add(button);
 		layerpane.add(labelButton, 0);
@@ -86,7 +91,7 @@ public class ArduinoUno extends Modul {
 
 		};
 		
-		
+		//Die update-Funktion wird mit den übergebenene Werten der Seitenverhältnisse aufgerufen
 		updateGUI(xscale, yscale);
 		
 		
@@ -96,50 +101,43 @@ public class ArduinoUno extends Modul {
 	@Override
 	public void updateGUI(int _xscale, int _yscale) {
 		
-		//Alte label werden entfernt, wenn vorhanden. Da sonst die alten Label bestehen bleiben würden
-		if(labelPower != null) {
-			layerpane.remove(labelPower);
-		}
 		
-		if(label13 != null) {
-			layerpane.remove(label13);
-		}
 		
 		this.xscale = _xscale; 
 		this.yscale = _yscale;
 		
 		
 		// Offset für den Arduino um diesen mehr mittig zu platzieren.
-				int locx = ((int)(0.0516*xscale));
-				int locy = ((int)(0.0517*yscale));
+		int locx = ((int)(0.0516*xscale));
+		int locy = ((int)(0.0517*yscale));
 				
-				layerpane.setPreferredSize(new Dimension(((int)(0.606*xscale)) + locx, ((int)(0.432*yscale)) + locy));
+		layerpane.setPreferredSize(new Dimension(((int)(0.606*xscale)) + locx, ((int)(0.432*yscale)) + locy));
 				
-				chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.606*xscale)), ((int)(0.432*yscale)), Image.SCALE_SMOOTH));
+		chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.606*xscale)), ((int)(0.432*yscale)), Image.SCALE_SMOOTH));
 				
-				chiplabel.setSize(((int)(0.606*xscale)), ((int)(0.432*yscale)));				
-				chiplabel.setLocation(locx, locy);
+		chiplabel.setSize(((int)(0.606*xscale)), ((int)(0.432*yscale)));				
+		chiplabel.setLocation(locx, locy);
 				
-				layerpane.add(chiplabel, 0);
+		layerpane.add(chiplabel, 0);
 
-							
-				labelPower.setLocation(((int)(0.5207*xscale))+locx, ((int)(0.13*yscale))+locy);
-				labelPower.setSize(((int)(0.02066*xscale)), ((int)(0.01034*yscale)));
-				layerpane.add(labelPower, 0);
+		//Position und Größe der PowerLED werden aktualisiert				
+		labelPower.setLocation(((int)(0.5207*xscale))+locx, ((int)(0.13*yscale))+locy);
+		labelPower.setSize(((int)(0.02066*xscale)), ((int)(0.01034*yscale)));
+		layerpane.add(labelPower, 0);
 				
+		
+		//Position und Größe der LED13 werden aktualisiert
+		label13.setLocation(((int)(0.2655*xscale))+locx, ((int)(0.092*yscale))+locy);
+		label13.setSize(((int)(0.02066*xscale)), ((int)(0.01034*yscale)));
+		layerpane.add(label13, 0);
 
-				label13.setLocation(((int)(0.2655*xscale))+locx, ((int)(0.092*yscale))+locy);
-				label13.setSize(((int)(0.02066*xscale)), ((int)(0.01034*yscale)));
-				layerpane.add(label13, 0);
-
-				// unsichtbarer Resetbutton
-				
-				button.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
+		//Größe und Position des Buttons werden aktualisiert
+		button.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
 								
-				labelButton.setSize(((int)(0.062*xscale)), ((int)(0.0527*yscale)));
-				labelButton.setLocation(((int)(0.06612*xscale))+locx, ((int)(0.00103*yscale))+locy);
-				
-				calculatePinPos(locx, locy);
+		labelButton.setSize(((int)(0.062*xscale)), ((int)(0.0527*yscale)));
+		labelButton.setLocation(((int)(0.06612*xscale))+locx, ((int)(0.00103*yscale))+locy);
+		//Die Pin Positionen werden neu berechnet
+		calculatePinPos(locx, locy);
 	}
 	
 
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
index 87a3b09..6f88c15 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
@@ -32,8 +32,7 @@ public class Button extends Modul implements ActionListener, MouseListener {
 	//private JToggleButton but1, but2, but3;
 	private JLabel chiplabel, label1, label2, label3;
 	private LockButton but1, but2, but3;
-	private int xscale;
-	private int yscale;
+
 	
 	
 	
@@ -96,7 +95,7 @@ public class Button extends Modul implements ActionListener, MouseListener {
 	}
 	
 	public Button(ImageIcon _icon, ImageIcon _icon1, ImageIcon _icon2, int _xscale, int _yscale) {
-
+		//Die übergebenen Skalierungswerte werden in das Objekt geschrieben
 		this.xscale = _xscale; 
 		this.yscale = _yscale;
 		chipIcon = _icon;
@@ -123,8 +122,9 @@ public class Button extends Modul implements ActionListener, MouseListener {
 		label1 = new JLabel();						
 		label2 = new JLabel();				
 		label3 = new JLabel();
-		
+		//Das neu skalierte Icon wird in die temporäre Variable chipIcon_temp geladen
 		chipIcon_temp = new ImageIcon(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
+		//Das skalierte Icon wird als Icon des chipLabels gesetzt.
 		chiplabel.setIcon(chipIcon_temp);
 		iconOff_temp = new ImageIcon(iconOff.getImage().getScaledInstance(((int)(0.0723*xscale)), ((int)(0.0724*yscale)), Image.SCALE_SMOOTH));
 		iconOn_temp = new ImageIcon(iconOn.getImage().getScaledInstance(((int)(0.0723*xscale)), ((int)(0.0724*yscale)), Image.SCALE_SMOOTH));
@@ -132,6 +132,7 @@ public class Button extends Modul implements ActionListener, MouseListener {
 		but1.setIcon(iconOff_temp);
 		but2.setIcon(iconOff_temp);
 		but3.setIcon(iconOff_temp);
+		//eine Aktualisierung des Moduls wird aufgerufen
 		updateGUI(xscale, yscale);
 		
 	
@@ -142,52 +143,29 @@ public class Button extends Modul implements ActionListener, MouseListener {
 		this.xscale = _xscale; 
 		this.yscale = _yscale;
 		
+		//Das Icon wird gemäß den neuen Seitenverhältnissen neu skaliert und geladen
 		layerpane.setPreferredSize(new Dimension(((int)(0.3037*xscale)), ((int)(0.304*yscale))));		
-		chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
-		
+		chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));		
 		chiplabel.setSize(((int)(0.3037*xscale)), ((int)(0.304*yscale)));
 		
-		
-		but1.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));	
-	
-		
+		//Die Größe und Position des Buttons 1 wird aktualisiert
+		but1.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));				
 		label1.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
 		label1.setLocation(((int)(0.02996*xscale)), ((int)(0.06618*yscale)));
 		
-		
+		//Die Icons On und Off werden neu skaliert und in die temporären Variablen geschrieben
 		iconOff_temp.setImage(iconOff.getImage().getScaledInstance(((int)(0.0723*xscale)), ((int)(0.0724*yscale)), Image.SCALE_SMOOTH));
 		iconOn_temp.setImage(iconOn.getImage().getScaledInstance(((int)(0.0723*xscale)), ((int)(0.0724*yscale)), Image.SCALE_SMOOTH));
 
-		//Abfrage ob der jeweilige Button im moment gedr�ckt wurde oder nicht und dementsprechend wird das gas gezoomte icon gesetzt
-//		if(!but1.isSelected()) 
-//			but1.setIcon(iconOff_temp);
-//		else
-//			but1.setIcon(iconOn_temp);
-//		
-//		
-//			
-//		
-//		if(!but2.isSelected()) 
-//			but2.setIcon(iconOff_temp);
-//		else
-//			but2.setIcon(iconOn_temp);
-//		
-//		
-//		
-//		if(!but3.isSelected()) 
-//			but3.setIcon(iconOff_temp);	
-//		else		
-//			but3.setIcon(iconOn_temp);
-//		
-		
+	
 		
-		but2.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
-			
+		//Die Größe und Position des Buttons 2 wird aktualisiert
+		but2.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));			
 		label2.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
 		label2.setLocation(((int)(0.1147*xscale)), ((int)(0.03619*yscale)));
 		
-		but3.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
-						
+		//Die Größe und Position des Buttons 3 wird aktualisiert
+		but3.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));						
 		label3.setSize(((int)(0.0723*xscale)), ((int)(0.0724*yscale)));
 		label3.setLocation(((int)(0.200*xscale)), ((int)(0.06618*yscale)));
 
@@ -198,7 +176,7 @@ public class Button extends Modul implements ActionListener, MouseListener {
 		layerpane.add(label1, 0);
 		layerpane.add(label2, 0);
 		layerpane.add(label3, 0);
-		
+		//Die Positionen der Pins werden neu berechnet
 		calculatePinPos();
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
index 53d734f..18c9b59 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
@@ -25,6 +25,7 @@ public abstract class Modul implements Observer {
 	protected Vector<Pin> pins = new Vector<Pin>();
 	protected JLayeredPane layerpane = new JLayeredPane();
 	protected Vector<Point> pinPos = new Vector<Point>();
+	protected int xscale, yscale;
 
 	public void setState(boolean State) {
 		active = State;
@@ -59,7 +60,8 @@ public abstract class Modul implements Observer {
 	
 	
 	/**
-	 * Funktion wird aufgerufen wenn sich die Größe des aktuellen Fensters ändert
+	 * Funktion wird aufgerufen wenn sich die Größe des aktuellen Fensters ändert und die Module werden entsprechend der neuen Fenstergröße
+	 * neu skaliert und angepasst.
 	 * @param xscale
 	 * Fenstergröße in x
 	 * @param yscale
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
index bc8a167..496c10f 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
@@ -36,8 +36,7 @@ public class Poti extends Modul implements ChangeListener, MouseWheelListener {
 	private ImageIcon chipIcon, chipIcon_temp;
 	private JPanel sliderPanel;
 	private Hashtable<Integer, JLabel> labelTable;
-	private int xscale;
-	private int yscale;
+
 	
 	private static final String POTI_TOOLTIP = "Slider ziehen oder mit Mausrad verstellen";
 	
@@ -52,7 +51,7 @@ public class Poti extends Modul implements ChangeListener, MouseWheelListener {
 		slider.setMinorTickSpacing(64);
 		slider.setPaintTicks(true);		
 		
-		// Erzeuge eine individuelle Slider Beschriftung
+		// Erzeuge eine Slider mit individueller Beschriftung
 		sliderlabel1 = new JLabel("0%");
 		sliderlabel2 = new JLabel("50%");
 		sliderlabel3 = new JLabel("100%");
@@ -70,9 +69,10 @@ public class Poti extends Modul implements ChangeListener, MouseWheelListener {
 		sliderPanel.setOpaque(false);
 		layerpane.add(chiplabel, 0);
 		layerpane.add(sliderPanel, 0);
-		
+		//Das ImageIcon des Potis wird neu skaliert und temporär geladen
 		chipIcon_temp = new ImageIcon(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
 		chiplabel.setIcon(chipIcon_temp);
+		//Eine Aktualisierung des Moduls wird aufgerufen
 		updateGUI(xscale, yscale);
 		
 
@@ -86,19 +86,17 @@ public class Poti extends Modul implements ChangeListener, MouseWheelListener {
 		this.yscale = _yscale;
 		
 		layerpane.setPreferredSize(new Dimension(((int)(0.3037*xscale)), ((int)(0.304*yscale))));				
-
 		chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
-		
 		chiplabel.setSize(((int)(0.3037*xscale)), ((int)(0.304*yscale)));
 		
-		
+		//Die Schriftgröße wird gemäß den Seitenverhältnissen neu berechnet
 		sliderlabel1.setFont(new Font(sliderlabel1.getName(), Font.BOLD, ((int)(0.0115*xscale))));
 		sliderlabel2.setFont(new Font(sliderlabel1.getName(), Font.BOLD, ((int)(0.0115*xscale))));
 		sliderlabel3.setFont(new Font(sliderlabel1.getName(), Font.BOLD, ((int)(0.0115*xscale))));
 		slider.setPreferredSize(new Dimension(((int)(0.186*xscale)), ((int)(0.05*yscale))));
 		sliderPanel.setSize(((int)(0.2066*xscale)), ((int)(0.066*yscale)));
 		sliderPanel.setLocation(((int)(0.04855*xscale)), ((int)(0.175*yscale)));
-
+		//Die Pin-Positionen werden neu berechnet
 		calculatePinPos();
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
index 3023d9e..9627774 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
@@ -31,8 +31,7 @@ public class RGB extends Modul {
 	private int transparancy, tredValue, tgreenValue, tblueValue;
 	private JLabel chiplabel, ledlabel;
 	private ImageIcon chipIcon, chipIcon_temp;
-	private int xscale;
-	private int yscale;
+
 
 	public RGB(ImageIcon _icon, int _xscale, int _yscale) {
 		this.xscale = _xscale; 
@@ -69,41 +68,34 @@ public class RGB extends Modul {
 
 		};
 		
+		layerpane.add(chiplabel, 0);
+		layerpane.add(ledlabel, 0);
+		//das ImageIcon wird mit dem neu skalierten Bild geladen
 		chipIcon_temp = new ImageIcon(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
+		//Das Neue ImageIcon wird als Icon des chipLabels gesetzt
 		chiplabel.setIcon(chipIcon_temp);
+		//Eine Aktualisierung des Moduls wird aufgerufen
 		updateGUI(xscale, yscale);
 	
 	}
 	
 	@Override
 	public void updateGUI(int _xscale, int _yscale) {
-	
-	
-		//Alte label werden entfernt, wenn vorhanden. Da sonst die alten Label bestehen bleiben würden
-		if(ledlabel != null) {
-			layerpane.remove(ledlabel);
-		}
-		
+						
 		this.xscale = _xscale; 
 		this.yscale = _yscale;
 		
-		// Erstellen der JLayerPane für das Modul
-				layerpane.setPreferredSize(new Dimension(((int)(0.3037*xscale)), ((int)(0.304*yscale))));
+		// Erstellen der JLayerPane für das Modul
+		layerpane.setPreferredSize(new Dimension(((int)(0.3037*xscale)), ((int)(0.304*yscale))));
+		chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
+		chiplabel.setSize(((int)(0.3037*xscale)), ((int)(0.304*yscale)));		
 				
-				chipIcon_temp.setImage(chipIcon.getImage().getScaledInstance(((int)(0.3037*xscale)), ((int)(0.304*yscale)), Image.SCALE_SMOOTH));
-				
-				chiplabel.setSize(((int)(0.3037*xscale)), ((int)(0.304*yscale)));
-				layerpane.add(chiplabel, 0);
-
-				// Erzeuge ein JLabel welches das Leuchten der LED darstellt.
-				
-
-				// Setze Position des Labels
-				ledlabel.setLocation(((int)(0.11*xscale)), ((int)(0.0383*yscale)));
-				ledlabel.setSize(((int)(0.2066*xscale)), ((int)(0.2068*yscale)));
-				layerpane.add(ledlabel, 0);
+		// Setze Position des Labels
+		ledlabel.setLocation(((int)(0.11*xscale)), ((int)(0.0383*yscale)));
+		ledlabel.setSize(((int)(0.2066*xscale)), ((int)(0.2068*yscale)));
 		
-				calculatePinPos();
+		//Die Pin-Positionen werden neu berechnet
+		calculatePinPos();
 	}
 
 	/**
-- 
GitLab