but rather WHEN.
And that is my point. If you look at the tutorial on radio buttons you will see that none of the examples use a ChangeListener.
So the question is why are you trying to do this? What problem are you trying to solve? First you need to learn the basics.
Then when the basics don't solve your problem you ask a question with a specific requirement.
There is no documentation for every situation that will cause a ChangeEvent to be generated. If you need to know then you need to learn how to answer the question yourself. The way you do this is to look at the source code and do a search for everywhere a ChangeEvent is generated.