Source: http://www.philadelphia.edu.jo/academics/nhalasa/uploads/JAVA/Lect/8%20GUI.pdf