LeBron James is also underpaid, at least his NBA salary. That's why he chose his team based on whatever would be best for his "brand" so he could make real money.
The NBA has a cap on how much each player can make (around $50M this year). Lebron could be, say, worth $100M/yr, yet they can't be paid this. I'm guessing that there are around a dozen players in the league worth more than the max salary.
It's "underpaid" in the sense of like, if teams would pay him more in the absence of the salary cap, which the other posters kindly reminded me of, then his "true" salary is higher than his current.
NBA has maximum contract sizes in its CBA. James (and many others) get the max contract allowed, which is why the best players choose teams for reasons other than money.