credited ryan van zeben for his jframe tutorial