Of course it works with swing.
The problem you might encounter is that of handling sessions.
In a web application a unit of work (i.e. a session) is most of the time simply identified by a single request. There are well known, easy to implement solutions to that problem.
In a rich client application this is different.
You might open a list of objects, which need a Session for lazy loading.
You might start Editor like Windows from that list for manipulations of these objects. But now you start getting issues with the session handling.
My recommendation is to essentially use a Session per Dialog. And reload any Object in the Session of the target Dialog, when it gets passed from one Dialog to another.
I described the
sessionhandling in rich client applications in a german blog article. It includes a list of relevant links at the end, which describe the problem of session handling in rich client applications.
Jens