It's because you create one instance of a Student:
Student std = new Student();
And then every time you click your button you set new values to that same instance.
So each time you click the button, you overwrite the last set of data with the new stuff and add the same instance to your ArrayList.
What you need to do is create the instance just before you set it's properties, so you get a new one to add each time.
Think of it like a shirt: it has a pocket, but if you put your wallet in the pocket, it's fine. But you can't get two wallets in the same pocket, so to hold your mate's wallet you have to remove yours first. You want to hold both wallets, you need two shirts (one y=for you to wear, and one for your mate!)