Every time you add a new item, you have to change the GameWindow.paint method.
You have a lot of hardcoded magic numbers. Like 16666666..., (userInput==38), (userInput==40), etc.
Some objects are not encapsulated very well. Ball is just a bag of data which doesn't do anything, just holds values. It also holds values not specific to ball, like window measurements.
What is the purpose of GameLoopTimer? It looks like it could be used to make movement framerate independent, but it is not used for that. Is the frequency of GameWindow.paint calls fixed in Java, or does it vary with the speed of the machine?
What is the purpose of the isHard boolean?
GameWindow has too many responsibilities - drawing, input detection and response, general initialization, object creation, object movement. It should delegate a lot more to other classes.