No, of course people do not always reveal themselves by their actions. There would be no unsolved crimes if that were the case.
Hamlet knows that, too, apparently, because he feels he has to create a scenario in order to catch the king revealing his guilt. He creates a scene on stage that mimics the manner in which Claudius killed King Hamlet (according to the Ghost). By doing so he catches the king's guilty behavior as the king reacts to the scene.
Claudius's reaction convinces both Hamlet and Horatio that the king is guilty.
Claudius, however, does nothing that reveals his guilt before the play-within-the-play. He fools everyone. If not for the Ghost giving Hamlet the knowledge of the murder and the details of the murder, there's no reason to think that Hamlet would ever have suspected Claudius.