Swing Hacks: Tips and Tools for Killer GUIs Paperback – Jun 1 2005
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
"It might sound like a 1950s pulp murder mystery novel, but Swing Hacks is actually a guide for Java developers that's packed with ways to get the most from the Swing application program interface. It's no Swing bible, there's already quite a few of those, but it's a great reference guide for all the cool stuff. The book is especially suited to client-focused Java developers who want to deliver polished applications, those who want to push Java to its limits, and coders who want to learn powerful techniques for their own applications. It has the typical depth you'd expect from an O'Reilly title and the practical approach ensures it doesn't get sidetracked. The chapters on Transparent & Animated Windows and Rendering are particularly helpful." .net magazine, September 2005
About the Author
Joshua Marinacci is the author of "The Java Sketchbook" column for java.net, covering topics in Java client-side and web development. A Java programmer since 1995, he's currently working on enterprise document management software. Joshua earned his BS from Georgia Tech in 1997, and has been a professional programmer for over a decade.
Chris Adamson is the Associate Online Editor for the O'Reilly web sites ONJava.com and java.net, and is the author of O'Reilly's QuickTime for Java: A Developer's Notebook. His consulting company, Subsequently & Furthermore, Inc., specializes in Java media development. Chris has a BA and BS from Stanford University and an MA from Michigan State University.
Most Helpful Customer Reviews on Amazon.com (beta)
It essentially consists of 99 power 'tricks' for creating WOW effects in your user interfaces. Some are eye candy that you'd probably never put in a production application, but I'd say 80%+ could be applied to every day app's. I'll be spending many hours pouring over the details of each hack to gain the deep insight offered by this book.
This book is going to allow me to reach the next level of Swing polish. I find it hard to believe that most people that consider themselves Swing developers wouldn't gain a lot from reading this book. Run, don't walk, and get this book.
There are a few minor disappointments, but I emphasis minor. The production quality seems a bit rushed as there was quite a few obvious errors in the preface alone, although not of a technical nature. Perhaps only the preface escaped any editing oversight, since the remainder of the book had nothing that jumped out at me.
As usual today, the examples are all available for download from OReilly's website. But I wonder why they didn't take the extra step of providing runnable versions of each hack. You have to compile each one - a minor annoyance. When browsing the book it would have been cool to be able to just double-click an associated jar file to see the effect in action.
The author clearly uses a Macintosh, since all (perhaps I missed one or two) the screen shots are from a Mac, and some of the Hacks relate to duplicating Mac OS features. Seeing that the majority of Swing applications are probably deployed on Windows machines, a bit more emphasis on Windows would have been more appropriate. And the screen shots could have used a cross-platform look-and-feel instead of the Mac OS.
In short summary, the good, the bad, and the ugly...
The Good: Insanely great tricks for getting the most out of Swing.
The Bad: Perhaps too much Macintosh focus and not enough Windows (XP).
The Ugly: Probably a bit rushed out the door since there are some glaring production mistakes, like chapter summaries without the chapter names or numbers, etc.
Chapter 6, "Transparent and Animated Windows," is one of my favorites because it helps my Swing components look a little more Mac-like. Creating transparent windows, creating frame-anchored sheets for dialogs, animating the sheet dialog, and sliding notes out from the taskbar are some of the hacks in that chapter. All it takes is a little knowledge of the Swing heavyweight component glass pane, and you're up and running. Buried in Hack 54 is an invaluable gem: Want to antialias all the text on your Swing application without touching any code? No problem, just add the following definition to the command line when you invoke your application:
java -Dswing.aatext=true MyStartClass
Chapter 10, "Audio," is also a good chapter to look at, because many Swing programmers tend to overlook sound as an important part of their application, plus since I am a multimedia programmer it is the kind of topic I would enjoy anyways. Maybe you want the swishing sound of a folder closing or of a clanging trash can when you throw away something in your Swing application. Hacks 70 through 73 discuss playing sounds with applets, JavaSound, the Java Media Framework, and Quicktime for Java technologies. Hack 74 shows you how to add MP3 support to the Java Media Framework API as well. This is not really a Swing hack, but it is simple to do and interesting.
Chapter 12, "Miscellany," presents us with some obvious tricks and some very important tips. For example, most programmers know that whenever they write event-handling code, such as an ActionListener that gets called when a button is pressed, they need to handle things quickly. You never want to spend any more time than you have to processing on the event-handling thread, or your GUI will become nonresponsive and be unable to repaint itself efficiently. Taking on a larger task often means kicking off a separate "worker" thread from the event-dispatching thread and letting that run in the background. However, what many beginning Swing programmers forget is that Swing is not thread-safe, which means that if you have GUI updates from that worker thread, you should always execute them back on the event-dispatching thread. In short, this means you should create another Runnable thread that kicks off serially with other GUI updates on the event-dispatching thread. You can do so by executing it with a call to SwingUtilities.invokeLater(myGUIUpdateThread).
Now for the few hacks that I did not like:
Hack #17 "Reorder a JList with Drag-and-Drop" is a good example of something potentially useful that just doesn't quite look right when you code it up and execute it.
Hack #42 "Make Your Frame Dissolve", is so bad it's almost funny, and would best be described as a failed hack.
Hack #48 "Make Text Components Searchable" is a really weak implementation, not even bothering to use highlighters. There's a much better example in Kim Topley's "Core Swing: Advanced Programming", which is out of print though it has some worthwhile content even now.
Hack #59 "Create a Color Eyedropper" is so visually bad that you will cringe when it executes.
However, I would not let these few failed hacks detract from the overall value of such a unique book. However, you might want to go to O'Reilly & Associates website and download the code first to see if this book is really up your alley before you purchase it. I see that the table of contents is not listed by Amazon, so I do that here for the purpose of completeness:
Chapter 1. Basic JComponents
Chapter 2. Lists and Combos
Chapter 3. Tables and Trees
Chapter 4. File Choosers
Chapter 5. Windows, Dialogs, and Frames
Chapter 6. Transparent and Animated Windows
Chapter 7. Text
Chapter 8. Rendering
Chapter 9. Drag-and-Drop
Chapter 10. Audio
Chapter 11. Native Integration and Packaging
Chapter 12. Miscellany
All of which is really a shame. Swing is like that cliched iceberg: just the spare top of it floats above the surface, with the vast bulk of possibility submerged and lurking in the depths. In this clever book, Marinacci and Adamson show you how to mine those depths and come up with GUIs that don't look like Java applications at all.
The book is a collection of recipes for achieving some really spectacular effects. I appreciated that lot of thought seems to have been put into making the examples small enough for a book. There are only a few multi-page listings among the 100 recipes between these covers.
If I have a complaint, it's that the book has a fairly obvious slant toward the Mac OS X platform. Many of the hacks are devoted to making your application emulate some OS X feature or another. In a way, this is justifiable -- after all, OS X's GUI includes many innovations not included in Swing by default -- but it's likely to leave those folks primarily interested in making Swing fit in better on Windows a little jealous.
While the hacks are not meant to be a comprehensive sweep over all the Swing widgets, there is enough variety amongst them to easily show you the abilities. The coding is useful in providing relatively succinct examples. UI programming is often very wordy in the source code. But the hack examples convey working solutions notable for their brevity. In and of itself, this is a virtue of the book. For it shows that Swing can be concisely applied. Less typing, and easier to understand. Which also means easier to debug.
Look for similar items by category
- Books > Computers & Technology > Computer Science
- Books > Computers & Technology > History & Culture > Privacy
- Books > Computers & Technology > History & Culture > Security
- Books > Computers & Technology > Internet & Social Media > Hacking
- Books > Computers & Technology > Networking & Cloud Computing > Network Security
- Books > Computers & Technology > Programming > Java
- Books > Computers & Technology > Programming > Languages & Tools
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Object-Oriented Design
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Computers & Technology > Software
- Books > Computers & Technology > Web Development > Website Architecture & Usability
- Books > Textbooks > Computer Science & Information Systems > Computer Science
- Books > Textbooks > Computer Science & Information Systems > Object-Oriented Software Design
- Books > Textbooks > Computer Science & Information Systems > Programming Languages
- Books > Textbooks > Computer Science & Information Systems > Software Design & Engineering