Try not to code the text into your app. Swing guis can be pretty easily written to be data driven, consider defining your GUI in an xml file (including the component names and positions/layout attributes).
I worked on systems that had a LOT of property sheets (which are just piles of controls, page after page of them)--without making it data driven, it's virtually impossible to maintain or internationalize.
If you decide to use a GUI builder, never modify the code it outputs if you can possibly avoid it--it's better to bind to the GUI from an external class. Think about what will happen if you have to do it without the builder--will it be difficult to port? Impossible?
Understand the gotchas in swing--only modifying GUI components from the AWT thread, returning the AWT thread as quickly as possible (spawn a new thread if you have to do anything that takes over 100ms),
Try your best to keep your code DRY--It can be a real programming challenge with Swing GUIs--Again, data driven code is the only way I've found to not constantly repeat code like
new JButton("...");
If your data is property-sheet based, seriously consider creating a binding mechanism to tie your controls to your data. A good goal for DRY code would be 0 (ZERO) control-specific lines of code per control to get a piece of data from your database to your GUI, have the user edit it and get it back to your DB. This means that you should be able to add a new control by doing nothing but modifying your data.