diff --git a/8. labor/SwingMvcLab/src/swingmvclab/Student.java b/8. labor/SwingMvcLab/src/swingmvclab/Student.java
index a2e81985e384238ea3cb43ca18211b9ebc066071..d6f73d4407e6f810a75fa59f79b220efad1fea69 100644
--- a/8. labor/SwingMvcLab/src/swingmvclab/Student.java	
+++ b/8. labor/SwingMvcLab/src/swingmvclab/Student.java	
@@ -58,7 +58,13 @@ public class Student implements Serializable {
     
     // Osztályzat beállítása.
     public void setGrade(Integer grade) {
-        this.grade = grade;
+		if (grade>5) 
+		{
+			this.grade = 1;
+			System.err.println("Nem lehetsz ötösnél jobb, ezért most megbuksz!");
+		}
+		else
+	        this.grade = grade;
     }
 
     // Hallgató létrehozása
diff --git a/8. labor/SwingMvcLab/src/swingmvclab/StudentData.java b/8. labor/SwingMvcLab/src/swingmvclab/StudentData.java
index 235f7d529c1d6a757ea0e102586e6b64d71c467f..4e85b59157f9dd1fb61cb85c953371433b281742 100644
--- a/8. labor/SwingMvcLab/src/swingmvclab/StudentData.java	
+++ b/8. labor/SwingMvcLab/src/swingmvclab/StudentData.java	
@@ -90,6 +90,7 @@ public class StudentData extends AbstractTableModel{
 					break;
 			}
 			students.set(i, s);
+			this.fireTableRowsUpdated(i, i);
 		}
 	}
 
diff --git a/8. labor/SwingMvcLab/src/swingmvclab/StudentFrame.java b/8. labor/SwingMvcLab/src/swingmvclab/StudentFrame.java
index 142912ceab55d166b41a94c5c24a45c2b2025fec..79dec31243de2ca187b7e5e63948cb4dd9fc69d2 100644
--- a/8. labor/SwingMvcLab/src/swingmvclab/StudentFrame.java	
+++ b/8. labor/SwingMvcLab/src/swingmvclab/StudentFrame.java	
@@ -1,6 +1,7 @@
 package swingmvclab;
 
 import java.awt.BorderLayout;
+import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
@@ -20,6 +21,10 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.JTextField;
+import javax.swing.RowSorter;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableModel;
+import javax.swing.table.TableRowSorter;
 
 /*
  * A megjelenítendõ ablakunk osztálya.
@@ -44,7 +49,15 @@ public class StudentFrame extends JFrame {
 		//táblázat
 		JTable jt=new JTable(data);
 		jt.setFillsViewportHeight(rootPaneCheckingEnabled);
-        this.add(new JScrollPane(jt),BorderLayout.CENTER);
+		jt.setRowSorter(new TableRowSorter<StudentData>(data));
+		
+		//színezés
+		jt.setDefaultRenderer(String.class, new StudentTableCellRenderer(jt.getDefaultRenderer(String.class)));
+		jt.setDefaultRenderer(Boolean.class, new StudentTableCellRenderer(jt.getDefaultRenderer(Boolean.class)));
+		jt.setDefaultRenderer(Number.class, new StudentTableCellRenderer(jt.getDefaultRenderer(Number.class)));
+		//-------------------------------------------------------------------------------------------------------
+		
+		this.add(new JScrollPane(jt),BorderLayout.CENTER);
 		
 		//hozzáadó sor
 		JPanel adderPanel=new JPanel(new FlowLayout());
@@ -115,4 +128,34 @@ public class StudentFrame extends JFrame {
         StudentFrame sf = new StudentFrame();
         sf.setVisible(true);
     }
+
+	private class StudentTableCellRenderer implements TableCellRenderer {
+		private final TableCellRenderer renderer;
+		public StudentTableCellRenderer(TableCellRenderer defRenderer) 
+		{
+			this.renderer = defRenderer;
+		}
+		
+		@Override
+		public Component getTableCellRendererComponent(JTable table,
+					Object value, boolean isSelected, boolean hasFocus,
+					int row, int column) 
+		{
+			Component component = renderer.getTableCellRendererComponent(
+						table, value, isSelected, hasFocus, row, column);
+			Student actualStudent = data.students.get(table.getRowSorter().convertRowIndexToModel(row));
+			// megállapítjuk, hogy bukásra áll-e vagy sem,
+			Color bg;
+			// és ez alapján átállítjuk a komponens háttérszínét:
+			if(actualStudent.getGrade()<=1)
+				bg=Color.RED;
+			else
+				bg=Color.GREEN;
+			component.setBackground(bg);
+			
+			return component;
+		}
+		
+	}
+
 }