I think it is quite ambitious for someone who took programming 7 years ago and is just playing around with it to start with a UI app, but perhaps there are other things you did first.
I don't know what you have in mind for the Screen class; you don't say. I don't know whether you intend for all the windows/frames you talk about to appear in their own windows, or to all appear in the same place in one main window as things change, etc.
I do notice that you have implemented a repaint() method that removes everything from a content pane, and then puts things back, which doesn't sound like what you are likely to have meant. Let me offer, as a principle, that it's rather unusual to have to override repaint at all, and gets into complexities that perhaps
you should leave until you have more of the basics down.
So, your main method instantiates ApplicationMain. AM's constructor creates another JFrame, does not put anything on this second one except a title, packs it, and then creates a StartScreen object. It doesn't have a constructor, so constructing it doesn't put anything on any frame or panel. I think you must have meant for repaint to get called after that, but I don't think it is -- repaint is a method on MainApplication, which is never made visible, and I don't want to try to figure out what happens when it is. So I think nothing gets displayed (except perhaps a frame, I haven't worked that out exactly).
I think you need to take a couple of steps back and form an overall picture of what you want to do, THEN try to translate it into Swing components and operations, one step at a time.
JFrame can be thought of as a basic container for a main window. You can extend it in a class and then call JFrame methods on that class (adding controls, making it visible), OR you can declare a variable of some sort to be of type JFrame and call all those same methods on it. You don't need to do both unless you are going to have more than one "main window".
You seem to have already grasped that the content pane is the one where things get added to the JFrame, very good.
I suggest doing some simpler things with JFrame and getting them to work before embarking on your four-screen game. Put up some labels and buttons and have the button actions do things with the labels, or something. Or put up your FIRST game window, with all the controls you want on it, and make it visible even though it doesn't do much. THEN start adding responses to keystrokes and changing to other windows and so forth, in small(er) pieces.
You will discover that a JFrame's default layout manager (another concept you'll need to get familiar with, if you aren't already) is BorderLayout, and adding a component to it without specifying where in the BorderLayout it goes is going to put it in the Center. Adding two things there in succession will have the second one replace the first, I believe, so although you add two labels I think only the second will appear.
I will leave you with this as something to build on:
As an exercise, I leave it to you to make the labels appear with a north-south orientation instead of east-west. You might want to look at "BoxLayout" and figure out how to use it for the purpose.
rc