This week's book giveaway is in the Java in General forum. We're giving away four copies of Beginning Java 17 Fundamentals: Object-Oriented Programming in Java 17 and have ishori Sharan & Adam L Davis on-line! See this thread for details.
The top line of the stack trace in the error message:
says that the NullPointerException happened on line 70 of your source file, in the method addEventHandlers(). A NullPointerException always means that something on the left side of a dot (.) or square bracket ([) is null.
You don't tell us which is line 70,and I'm not going to spend my time counting, so you'll have to find the error yourself. But I note that the code in addEventHandlers() seems to assume that addMenu() has been called before addEventHandlers() is called -- but I don't see anyplace where addMenu() is called at all.
I said you get NullPointerExceptions when something to the left of a dot (.) is null. There's only one thing to the left of a dot on this line: the member variable "exit". Where is exit assigned to? Only in the method addMenu(). If addMenu() is never called, then "exit" remains null (the value it has when the object is created.) If exit is null, and you try to call exit.addActionListener(), then you'll get a NullPointerException. And finally, as I said before, addMenu() is actually never called.
I kind of wanted you to figure this out for yourself, but now that I've explained it, do you get it?