Thread JDBC Code in Swing Applications
Swing events are not made to support complex application processing. In fact, if you perform any extensive processing in the same thread that triggered a Swing event—the click of a button, for example—you will create odd behavior in your user interface. Windows will stop redrawing, and menu items will cease to behave as expected.
Any network calls, especially JDBC calls that trigger database activity, require too much processing to place into a Swing event thread. Your Swing applications should therefore disable the appropriate user interface elements and start a new thread when the user triggers some event that needs to go to the database. All database access should take place in the spawned thread. When that thread is done, it should notify the Swing event queue that it is time to reenable the appropriate user interface elements.
The book Database Programming with JDBC and Java (O’Reilly) goes into more detail on the topic of database access from Swing access than is appropriate for this chapter. You can see some example code, however, by downloading its examples from ftp://ftp.oreilly.com/pub/examples/java/jdbc2.