Along the line of Chii's answer, I would recommend taking a look at the Windows Vista User Experience Guidelines for general tips on making user interfaces.
Although the name ("Windows Vista User Experience Guidelines") and source (Microsoft) may suggest that it only contains Windows-centric tips and advice, it does offer good general tips and directions that can be used when designing interfaces for non-Windows applications as well.
The Design Principles sections address some points to keep in mind when designing an effective user interface. For example, bullet three of How to Design a Great User Experience says:
Don't be all things to all people Your
program is going to be more successful
by delighting its target users than
attempting to satisfy everyone.
These are the kinds of tips that apply to designing user interfaces on any platform. Of course, there are also Windows-specific guidelines as well.
I believe one of the biggest reasons why look and feel of Swing applications seems "boring" and "outdated" is due to the platform-independent nature of Java. In order for the graphical user interfaces to work on several different platforms, Java needs to have facilities to adapt the user interface to the different host operating systems.
For example, various platforms have various sizes for windows, buttons, and other visual components, so absolute positioning does not work too well. To combat that problem, Swing uses Layout Managers which (generally) use relative positioning to place the visual components on the screen.
Despite these "limitations" of building graphical user interfaces for Java, I think that using tips from guidelines that are provided by non-Sun sources and non-Java-specific sources can still be a good source of information in designing and implementing an user interface that is effective. After all, designing an user interface is less about programming languages and more about human-machine interaction.