I watched a video once where the trainer would enter the house, and immediately as she entered, she would click and put the treat on the floor before the dog jumped. It had to be FAST before the dog's feet left the floor. She would continue to click, treat, click, treat, always placing the treat on the floor. Her philosophy was if the treat was on the floor, the dog learned to associate the floor with a treat, and having all four paws on the floor to get a treat. We tried this with our dog and had great success. You slow the clicking and treating down gradually, so the dog starts to see that they need to stay on the floor. Eventually, I faded this method out and used the "ignore till their butt is on the floor" method. If he hasn't been worked though, he still will hop off his front feet ever so slightly at first, and then sit. He never puts any weight on me when he jumps anymore though, which to me is the more important part.
If I had more time an energy right now, I would spend time training this every day, and he would be much more solid with it. I will add though, the knee trick didn't work as well for our pup. He definitely is more of a positive-reinforcement learner.
Good luck with whatever method you choose!!!