I've worked as a freelance for a long time and almost 90% of the projects were about Java Swing (Desktop applications). Also a lot of projects involved migration from languages like Visual Fox Pro to Java, it was a pain, because the hard part is not think in the logic which is already done, the hard part is take the code that is a mess and turn it into a good-looking code following the good practices and using design patterns, that's why it is a good idea to make a schema or a map in your mind how you can separate your code following the concepts of Model, View, Controller.
MVC as mentioned helps you to have a good-looking, maintainable and easy to read code, as well as you follow the programming paradigms and good practices.
View: Obviously, the part that interacts with the user (user interface), in case of Swing, your windows, frames, panels and all the code that involves the graphic components you need for your app.
Controller: Involves the core or business logic you stablish for your application, in this "layer" you should include the functionality and the "how my application will achieve the goals?".
Model: Related with the data you manage, for example, your entities and classes that represents the data you want to manage or give maintenance.
Applying MVC is not so hard, but as I mentioned, it could be sometimes a pain when you have to migrate your code from a not-applying-MVC structure to a MVC structured application. It is easier to start coding using MVC.
A way I get used to it is by using maven and separate my application into little "modules", of course, you don't need maven, I just found it useful in that moment, but in any case you can try practicing or get used to MVC by separating your application into little projects, for instance:
Java Project 1: application-data-model (contains all the code related with data management: entities, dtos, beans, daos)
Java Project 2: application-core-controller (contains all the business logic and functionality, you can use a facade pattern here if you want to make your code more "transparent" when you relate with your view)
Java Project 3: application-view-ui (contains all the panels, frames and graphic components)
Working this way helped me (and forced me) to get used to separate my code and keep an eye on what really matters to the project I'm working on. For instance, if I'm on application-data-model I'm focused in data model, I'm not thinking in business logic nor graphic interface.
Long explanation, maybe somebody could do it better, but hope I could have helped you or at least gave you a hand with this.
Thank you! I will need some time to think this through before I consider making it the accepted answer though. It seems logical to have business logic in the controller, but my understanding was that this was not a good idea and that it should be part of the model.
don't worry, we're here to help. You mentioned a good point, and I agree with you that model should contain some logic, but that logic should just concern to the data access and entities you handle like DAOS. In Controller you can have other processes like salary calculation, responsibility delegation. And, again as you wrote, controller will use model to manage or map the data. You can add additional patterns like facade (as I mentioned) to separate a bit more your business logic from your view.
@MarceloTataje : Also Can I use Spring for dependency injecting my controllers with Models and Views with controllers and Hibernate with Data Persistence? this seems to be straightforward as long as i maintain single instance of controller(Service) and model(DAO) as I do in my web application. Also these need to be stateless correct?
Sorry for the late answer and yes, you can make that comparation. In my opinion Spring is one of the best frameworks I've worked with. I really recommend, even when you are not in a Web environment and turning it into a desktop, you can apply the concepts you mention in your comments, Spring will make a good job in simplifying many of the functionality you want to achieve during migration. All depends on you my friend, you can achieve the functionality using standard components or get help from a framework like Spring which suits very good in this case.