File-copying Manager
You are putting all in one class. That makes structuring and rereading hard. Hence your question, and maybe you felt the urge to make sections in the class by something like // ---------------------.

Then it is time to look at the Model-View-Controller paradigm. An internet search will give better material on this subject than I can.

Basically you have one instance of a Controller class, that is more or less accessible from everywhere. There are View classes (the JFrame) and the Model classes, the data model, directory lists.

The Models can be developed independently, and used in a library.

The Controller is listener of views and models, and controls views.
It holds the data model and the view (JFrame).

The Views signal events to the controller. And provide hooks for the controller. They get passed data, the model.

So you can have several classes, in several subpackages.

The approach is:


Start a new project
Use a version control system, like GIT (has the repository with the project)
An empty controller that starts the JFrame with itself
The JFrame, the original code


And then move the data to the outside, handle in the Controller.
Data changes via events over the controller.
Business logic like enabling/disabling in the controller.

Then you might be able to split up the GUI in specific JPanels or such.

Instead of doing the same actionPerformed for a menu item and button, you might use an Action extending AbstractAction, and add that to the constructors of JMenuItem and JButton. That action might then be disabled/enabled instead of doing it to the components. It also means that you need not make all components available as fields, for instance all those JMenuItems.

For the rest, production quality, for me means, using a build infrastructure like maven, that handles for you the usage of third party libraries, versioning and so on.