Home > Store

Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java¿ Applications

Register your product to gain access to bonus material or receive a coupon.

Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java¿ Applications


  • Sorry, this book is no longer in print.
Not for Sale


  • Copyright 2008
  • Dimensions: 7" x 9-1/4"
  • Pages: 608
  • Edition: 1st
  • Book
  • ISBN-10: 0-13-241393-0
  • ISBN-13: 978-0-13-241393-0

Filthy Rich Clients refers to ultra-graphically rich applications that ooze cool. They suck the user in from the outset and hang on to them with a death grip of excitement. Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java™ Applications shows you how to build better, more effective, cooler desktop applications that intensify the user experience.

The keys to Filthy Rich Clients are graphical and animated effects. These kinds of effects provide ways of enhancing the user experience of the application through more attractive GUIs, dynamic effects that give your application a pulse, and animated transitions that keep your user connected to the logical flow of the application. The book also discusses how to do so effectively, making sure to enrich applications in sensible ways.

In-depth coverage includes

  • Graphics and GUI fundamentals: Dig deep into the internals of how Swing and Java 2D work together to display GUI applications onscreen. Learn how to maximize the flexibility of these libraries and use them most effectively.
  • Performance: Follow in-depth discussions and tips throughout the book that will help you write high-performing GUI applications.
  • Images: Understand how images are created and used to make better Java applications.
  • Advanced graphics: Learn more about elements of Swing and Java 2D that are of particular benefit to Filthy Rich Clients.
  • Animation: Discover general concepts of animation, as well as how to use the facilities provided in the Java platform. Learn new utility libraries that vastly simplify animations in Java.
  • Effects: Learn how to create, customize, and use static and animated effects—the mainstays of Filthy Rich Clients.

Code examples illustrate key concepts, and the book’s companion Web site, http://filthyrichclients.org, includes extensive demos, utility libraries, additional information on related technologies, and more.

Informal, fun, and, most of all, useful, this book is great for any developer working with Java to build desktop applications.

Sample Content

Online Sample Chapter

Using Java 2D's Image-Processing Model

Downloadable Sample Chapter

Download Chapter 8: Image Processing

Table of Contents

Foreword xvii

Preface xix

Acknowledgments xxv

About the Authors xxvii

Introduction 1

Part I: Graphics and GUI Fundamentals 9

Chapter 1: Desktop Java Graphics APIs: Swing, AWT, and Java 2D 11

Abstract Window Toolkit (AWT) 12

Java 2D 13

Swing 13

Chapter 2: Swing Rendering Fundamentals 15

Events 16

Swing Painting 17

Swing Rendering 20

Double-Buffering 28

Threading 31

Chapter 3: Graphics Fundamentals 43

Java 2D 43

Rendering 45

Chapter 4: Images 91

Image Types 92

BufferedImage 95

Image Scaling 98

Chapter 5: Performance 115

Use the Clip 115

Compatible Images 121

Managed Images 126

Intermediate Images 134

Optimal Primitive Rendering 143

Benchmark 144

Command-Line Flags 145

Part II: Advanced Graphics Rendering 151

Chapter 6: Composites 153

AlphaComposite 153

AlphaComposite: The 12 Rules 155

Creating and Setting Up an AlphaComposite 163

Common Uses of AlphaComposite 164

Issues with AlphaComposite 168

Create Your Own Composite 170

Summary 177

Chapter 7: Gradients 179

Two-Stops Linear Gradient 179

Special Effects with Regular Gradients 182

Multistops Linear Gradient 187

Radial Gradient 189

Optimizing Gradients 193

Chapter 8: Image Processing 199

Image Filters 200

Processing an Image with BufferedImageOp 201

AffineTransformOp 203

ColorConvertOp 204

ConvolveOp 206

LookupOp 211

RescaleOp 213

Custom BufferedImageOp 214

A Note about Filters Performance 222

Summary 222

Chapter 9: Glass Pane 223

Painting on the Glass Pane 225

Blocking Input Events 230

Chapter 10: Layered Panes 237

Using Layered Pane Layers 238

Ordering Components within a Single Layer 242

Layered Panes and Layouts 243

Alternative to JLayeredPane with Layouts 244

Chapter 11: Repaint Manager 249

When Swing Gets Too Smart 249

Meet the RepaintManager 251

A Reflection on RepaintManager 253

Summary 262

Part III: Animation 263

Chapter 12: Animation Fundamentals 265

It’s About Time 265

Fundamental Concepts 266

Frame-Based Animation 266

Timing (and Platform Timing Utilities) 275

Resolution 288

Animating Your Swing Application 300

Summary 314

Chapter 13: Smooth Moves 315

Background: Why Does My Animation Look Bad? 315

What Makes Animations Choppy, and How to Smooth Them Out 316

SmoothMoves: The Demo 335

Summary 341

Chapter 14: Timing Framework: Fundamentals 343

Introduction 343

Core Concepts 345

Interpolation 359

Summary 378

Chapter 15: Timing Framework: Advanced Features 379

Triggers 379

Property Setters 392

Summary 420

Part IV: Effects 421

Chapter 16: Static Effects 423

Blur 423

Reflection 434

Drop Shadows 437

Highlights 442

Sharpening 450

Summary 458

Chapter 17: Dynamic Effects 459

Motion 460

Fading 465

Pulse 473

Spring 484

Morphing 489

Summary 495

Chapter 18: Animated Transitions 497

Animating Application State Segues 497

Animated Transitions: The Library 501

Example: SearchTransition 503

Example: SearchTransition Revisited: Customization 516

Example: ImageBrowser 519

Animated Transitions: Under the Hood, or How Do You Get Swing to Do That? 527

Summary 530

Chapter 19: Birth of a Filthy Rich Client 531

Aerith 531

Workflow Paper Design 533

The Vision 535

Screen Paper Design 537

Mockup 538

From Mockup to Code 540

But . . . I’m Not an Artist! 544

Choosing Nice Colors 545

Read Design Books 547

Summary 548

Conclusion 549

Index 553


Download the Preface


Download the Foreword


Download the Index


Download the Introduction


Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020