Typically, for a multi-user Swing application you would want to separate the "client" part of the application from the "server" application.
This works as follows:
- Each user would get their own running instance of the client application. This can be on their own machine.
- The server application is a single instance (or maybe a cluster) that accepts connections from multiple clients and talks to the database
- The client applications talk to the server application when they need to access or change data. There are a wide variety of different communication methods you can use.
- Optionally, the server application can send notifications to the client (e.g. in situations where data is updated by another client)
You can do without the server application if you are happy to let the clients connect to the same database. This is simpler to set up, but has some downsides:
- You need to be much more careful about concurrent access to the database / potential corruption from different clients attempting to alter the same data at the same time.
- You need to allow connections to your database, from clients that are potentially untrusted. This is a security risk.
Given that you already have a working application, the second option is probably easier for you to move to. Just be aware of the downsides: the first option is a much better architecture in general.