It doesn't look right to me.
First of all, usually when it doesn't feel right is because it isn't. You should always try to make your code intuitive for others. Ever tried to change someone else´s code and complained everything is a mess? Well, that's because the coder was only coding for himslef. When you code you should try to make clear for everyone else what youre trying to accomplish. And this usually means choosing the right level of granularity, and choosing the right names for classes, methods, variables, packages and so on.
Should I store all my products in a hashmap and then get them to show in different menus?
If you store all your products on a hashmap you can find them easily with some key. That's good. But is that all you need? You may need to find them by category, by name, order them, specify relations between them and so on. So my guess would be that you should have a Products class with all this common operations as a public interface. I bet you will find this a lot easier to implement because everything is encapsulated in a single place, and you only need to think about a single -hopefully- simple operation at a time. Remember:clases should ALWAYS be specialists. Keep it short, and simple. I personally like the spartan programming principle.
Do you think that doing a GUI with Swing will make things much easier?
Nope, whatever problems you're having right now may disappear by changing the way you read user input, but you will find new ones. My guess is that you're doing too much in each of your menu classes. Instead of creating a new class for each use case, and stuffing everything inside. I think, you should maybe have a single class which references business objects, and delegates the real job to them depending on the users input. Remember:clases should ALWAYS be specialists. Ask yourself, whats the point of this menu class? Well if it's a menu then it's just about choosing what i want, and that's it. Simple as that. Let someone else do the real work.